diff --git a/.idea/go.iml b/.idea/go.iml
new file mode 100644
index 0000000..7ee078d
--- /dev/null
+++ b/.idea/go.iml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..445b650
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "associatedIndex": 7
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+ file://$PROJECT_DIR$/tour/tour.go
+ 6
+
+
+
+
+
+
\ No newline at end of file
diff --git a/flysnow/ch02/go.mod b/flysnow/ch02/go.mod
new file mode 100644
index 0000000..ff44ae0
--- /dev/null
+++ b/flysnow/ch02/go.mod
@@ -0,0 +1,3 @@
+module flysnow/ch02
+
+go 1.23.0
diff --git a/flysnow/ch02/main.go b/flysnow/ch02/main.go
new file mode 100644
index 0000000..c3030fe
--- /dev/null
+++ b/flysnow/ch02/main.go
@@ -0,0 +1,52 @@
+package main
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+)
+
+func main() {
+ var f32 float32 = 2.2
+ var f64 float64 = 10.2345
+ fmt.Println("f32 is", f32, ", f64 is", f64)
+ var bf bool = false
+ var bt bool = true
+ fmt.Println("bf is", bf, ", bt is", bt)
+ var s1 string = "Hello"
+ var s2 string = "世界"
+ fmt.Println("s1 is", s1, ", s2 is", s2)
+ fmt.Println("s1+s2=", s1+s2)
+ // 零值
+ var zi int
+ var zf float64
+ var zb bool
+ var zs string
+ fmt.Println("zi is", zi, ", zf is", zf, "zb is", zb, ", zs is", zs)
+ i := 3.14
+ pi := &i
+ fmt.Println(*pi)
+
+ // 常量iota
+ const (
+ one = iota + 1
+ two
+ three
+ four
+ )
+ fmt.Println(one, two, three, four)
+
+ // string
+ j := 5
+ i2s := strconv.Itoa(j)
+ s2i, err := strconv.Atoi(i2s)
+ fmt.Println(i2s, s2i, err)
+ f2s := strconv.FormatFloat(f64, 'e', -1, 32)
+ fmt.Println(f2s)
+ // 判断字符串开头是否为“H”
+ fmt.Println(strings.HasPrefix(f2s, "H"))
+ // 查找字符串
+ fmt.Println(strings.Index(f2s, "e"))
+ // 全部转大写
+ fmt.Println(strings.ToUpper(f2s))
+}
diff --git a/flysnow/ch03/go.mod b/flysnow/ch03/go.mod
new file mode 100644
index 0000000..adcd3e8
--- /dev/null
+++ b/flysnow/ch03/go.mod
@@ -0,0 +1,3 @@
+module flysnow/ch03
+
+go 1.23.0
diff --git a/flysnow/ch03/main.go b/flysnow/ch03/main.go
new file mode 100644
index 0000000..3c464af
--- /dev/null
+++ b/flysnow/ch03/main.go
@@ -0,0 +1,74 @@
+package main
+
+import "fmt"
+
+func main() {
+ i := 10
+ if i > 10 {
+ fmt.Println("i > 10")
+ } else {
+ fmt.Println("i <= 10")
+ }
+
+ i = 6
+ if i > 10 {
+ fmt.Println("i > 10")
+ } else if i > 5 && i <= 10 {
+ fmt.Println("5 < i <= 10")
+ } else {
+ fmt.Println("i <= 5")
+ }
+
+ switch {
+ case i > 10:
+ fmt.Println("i > 10")
+ case i > 5 && i <= 10:
+ fmt.Println("5 < i <= 10")
+ default:
+ fmt.Println("i <= 5")
+ }
+
+ switch j := 1; j {
+ case 1:
+ fallthrough
+ case 2:
+ fmt.Println(j)
+ default:
+ fmt.Println("没有匹配")
+ }
+
+ sum := 0
+ for i := 1; i <= 100; i++ {
+ sum += i
+ }
+ fmt.Println(sum)
+
+ sum = 0
+ i = 1
+ for i <= 100 {
+ sum += i
+ i++
+ }
+ fmt.Println("the sum is", sum)
+
+ sum = 0
+ i = 1
+ for {
+ sum += i
+ i++
+ if i > 100 {
+ break
+ }
+ }
+ fmt.Println("the sum is", sum)
+
+ sum = 0
+ for i := 0; i < 100; i++ {
+ if i%2 != 0 {
+ continue
+ }
+ sum += i
+ }
+ fmt.Println("the sum is", sum)
+
+}
diff --git a/flysnow/ch04/go.mod b/flysnow/ch04/go.mod
new file mode 100644
index 0000000..6b632af
--- /dev/null
+++ b/flysnow/ch04/go.mod
@@ -0,0 +1,3 @@
+module flysnow/ch04
+
+go 1.23.0
diff --git a/flysnow/ch04/main.go b/flysnow/ch04/main.go
new file mode 100644
index 0000000..8edcd7a
--- /dev/null
+++ b/flysnow/ch04/main.go
@@ -0,0 +1,59 @@
+package main
+
+import (
+ "fmt"
+ "unicode/utf8"
+)
+
+func main() {
+ array := []string{"a", "b", "c", "d", "e"}
+ fmt.Println(array)
+ for i := 0; i < len(array); i++ {
+ fmt.Printf("数组索引: %d,对应值: %s\n", i, array[i])
+ }
+ for i, v := range array {
+ fmt.Printf("数组索引: %d, 对应值: %s\n", i, v)
+ }
+ for _, v := range array {
+ fmt.Printf("数组值: %s\n", v)
+ }
+ // 切片slice
+ slice := array[2:4] // 包含索引2,不包含索引4
+ fmt.Println(slice)
+ slice1 := make([]string, 4)
+ slice2 := make([]string, 4, 8)
+ slice2 = append(slice1, "f")
+ fmt.Println(slice2)
+ // 映射map
+ nameAgeMap := make(map[string]int)
+ nameAgeMap["Snowfay"] = 20
+ fmt.Println(nameAgeMap)
+ age := nameAgeMap["Snowfay"]
+ fmt.Println(age)
+ age, ok := nameAgeMap["Snowfay"]
+ if ok {
+ fmt.Println(age)
+ } else {
+ fmt.Println(ok)
+ }
+ nameAgeMap["飞雪无情"] = 50
+ fmt.Println(nameAgeMap)
+ delete(nameAgeMap, "飞雪无情")
+ fmt.Println(nameAgeMap)
+ nameAgeMap["Hello"] = 22
+ nameAgeMap["Allen"] = 33
+ for k, v := range nameAgeMap {
+ fmt.Println("Key is", k, "Value is", v)
+ }
+ fmt.Println(len(nameAgeMap))
+ // string
+ s := "Hello飞雪无情"
+ bs := []byte(s)
+ fmt.Println(bs)
+ fmt.Println(s[0], s[1], s[15])
+ fmt.Println(len(s))
+ fmt.Println(utf8.RuneCountInString(s))
+ for i, r := range s {
+ fmt.Printf("%d %c\n", i, r)
+ }
+}
diff --git a/flysnow/ch05/go.mod b/flysnow/ch05/go.mod
new file mode 100644
index 0000000..aa02f0b
--- /dev/null
+++ b/flysnow/ch05/go.mod
@@ -0,0 +1,3 @@
+module flysnow/ch05
+
+go 1.23.0
diff --git a/flysnow/ch05/main.go b/flysnow/ch05/main.go
new file mode 100644
index 0000000..a001d1a
--- /dev/null
+++ b/flysnow/ch05/main.go
@@ -0,0 +1,70 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+)
+
+type Age uint
+
+func (age Age) String() {
+ fmt.Println("the age is", age)
+}
+
+func (age *Age) Modify() {
+ *age = Age(30)
+}
+
+func main() {
+ age := Age(25)
+ age.String()
+ age.Modify()
+ age.String()
+
+ sm := Age.String
+ sm(age)
+
+ result, err := sum(-1, 2)
+ if err != nil {
+ fmt.Println(err)
+ } else {
+ fmt.Println(result)
+ }
+ fmt.Println(sum1(1, 2))
+ fmt.Println(sum1(1, 2, 3))
+ fmt.Println(sum1(1, 2, 3, 4))
+
+ sum2 := func(a, b int) int {
+ return a + b
+ }
+ fmt.Println(sum2(1, 2))
+ c1 := colsure()
+ fmt.Println(c1())
+ fmt.Println(c1())
+ fmt.Println(c1())
+}
+
+func colsure() func() int {
+ i := 0
+ return func() int {
+ i++
+ return i
+ }
+}
+
+func sum(a int, b int) (sum int, err error) {
+ if a < 0 || b < 0 {
+ return 0, errors.New("a或者b不能是负数")
+ }
+ sum = a + b
+ err = nil
+ return
+}
+
+func sum1(params ...int) int {
+ sum := 0
+ for _, i := range params {
+ sum += i
+ }
+ return sum
+}
diff --git a/flysnow/ch06/go.mod b/flysnow/ch06/go.mod
new file mode 100644
index 0000000..5d95484
--- /dev/null
+++ b/flysnow/ch06/go.mod
@@ -0,0 +1,3 @@
+module flysnow/ch06
+
+go 1.23.0
diff --git a/flysnow/ch06/main.go b/flysnow/ch06/main.go
new file mode 100644
index 0000000..c8c85c1
--- /dev/null
+++ b/flysnow/ch06/main.go
@@ -0,0 +1,10 @@
+package main
+
+type person struct {
+ name string
+ age uint
+}
+
+func main() {
+
+}
diff --git a/flysnow/tour/go.mod b/flysnow/tour/go.mod
new file mode 100644
index 0000000..ee738b1
--- /dev/null
+++ b/flysnow/tour/go.mod
@@ -0,0 +1,3 @@
+module flysnow/tour
+
+go 1.23.0
diff --git a/flysnow/tour/tour.go b/flysnow/tour/tour.go
new file mode 100644
index 0000000..c048119
--- /dev/null
+++ b/flysnow/tour/tour.go
@@ -0,0 +1,7 @@
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("hello world")
+}
diff --git a/helloworld/.idea/.gitignore b/helloworld/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/helloworld/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/helloworld/.idea/go.iml b/helloworld/.idea/go.iml
new file mode 100644
index 0000000..5e764c4
--- /dev/null
+++ b/helloworld/.idea/go.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/helloworld/.idea/modules.xml b/helloworld/.idea/modules.xml
new file mode 100644
index 0000000..1b776a7
--- /dev/null
+++ b/helloworld/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/helloworld/greetings/go.mod b/helloworld/greetings/go.mod
new file mode 100644
index 0000000..7dd71ce
--- /dev/null
+++ b/helloworld/greetings/go.mod
@@ -0,0 +1,3 @@
+module example.com/greetings
+
+go 1.16
diff --git a/helloworld/greetings/greetings.go b/helloworld/greetings/greetings.go
new file mode 100644
index 0000000..803467d
--- /dev/null
+++ b/helloworld/greetings/greetings.go
@@ -0,0 +1,8 @@
+package greetings
+
+import "fmt"
+
+func Hello(name string) string {
+ message := fmt.Sprintf("Hi, %v. Welcome!", name)
+ return message
+}
diff --git a/helloworld/hello/go.mod b/helloworld/hello/go.mod
new file mode 100644
index 0000000..f1eec85
--- /dev/null
+++ b/helloworld/hello/go.mod
@@ -0,0 +1,7 @@
+module example.com/hello
+
+go 1.23.0
+
+replace example.com/greetings => ../greetings
+
+require example.com/greetings v0.0.0-00010101000000-000000000000
diff --git a/helloworld/hello/hello.go b/helloworld/hello/hello.go
new file mode 100644
index 0000000..c1e0055
--- /dev/null
+++ b/helloworld/hello/hello.go
@@ -0,0 +1,11 @@
+package main
+
+import (
+ "example.com/greetings"
+ "fmt"
+)
+
+func main() {
+ message := greetings.Hello("Gladys")
+ fmt.Println(message)
+}