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) +}