From e692832be80387414ca001f12f51d45e88fa5db8 Mon Sep 17 00:00:00 2001 From: T-pai2022 Date: Mon, 7 Oct 2024 18:26:29 +0800 Subject: [PATCH] =?UTF-8?q?go=E8=AF=AD=E8=A8=80=E5=9F=BA=E7=A1=80=EF=BC=9A?= =?UTF-8?q?=E8=AF=AD=E6=B3=95=E3=80=81=E7=A4=BA=E4=BE=8B=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 39 -- README.md | 84 ++-- go_base/{.keep => pkg/mod/cache/lock} | 0 .../code/demo1/demo1.go" | 7 + .../code/demo10/demo10.go" | 40 ++ .../code/demo11/demo11.go" | 104 +++++ .../code/demo12/demo12.go" | 132 ++++++ .../code/demo2/demo2.go" | 35 ++ .../code/demo3/demo3.go" | 31 ++ .../code/demo4/demo4.go" | 54 +++ .../code/demo5/demo5.go" | 43 ++ .../code/demo6/demo6.go" | 19 + .../code/demo7/demo7.go" | 23 + .../code/demo8/demo8.go" | 29 ++ .../code/demo9/demo9.go" | 35 ++ .../code/go.mod" | 3 + ...30\351\207\217\351\205\215\347\275\256.md" | 62 +++ .../notes/10.nil.md" | 100 +++++ ...1.\345\205\263\351\224\256\345\255\227.md" | 415 ++++++++++++++++++ .../notes/12.\345\207\275\346\225\260.md" | 276 ++++++++++++ ...30\351\207\217\345\270\270\351\207\217.md" | 125 ++++++ .../notes/3.\346\225\260\347\273\204.md" | 33 ++ .../notes/4.\345\210\207\347\211\207.md" | 69 +++ .../notes/5.\346\214\207\351\222\210.md" | 85 ++++ ...37\345\221\275\345\221\250\346\234\237.md" | 39 ++ ...01\345\205\263\351\224\256\345\255\227.md" | 73 +++ ...73\345\236\213\350\275\254\346\215\242.md" | 36 ++ .../notes/9.map.md" | 132 ++++++ .../notes/GOPATH.png" | Bin 0 -> 1978 bytes .../notes/GOPROXY.png" | Bin 0 -> 1976 bytes .../notes/PATH.png" | Bin 0 -> 900 bytes .../notes/goroot.png" | Bin 0 -> 2120 bytes .../notes/mod.png" | Bin 0 -> 8011 bytes .../notes/mod_2.png" | Bin 0 -> 9888 bytes .../\345\205\263\351\224\256\345\255\227.png" | Bin 0 -> 19297 bytes .../notes/\346\211\247\350\241\214.png" | Bin 0 -> 3808 bytes .../\346\240\207\350\257\206\347\254\246.png" | Bin 0 -> 20107 bytes .../\350\277\220\347\256\227\347\254\246.png" | Bin 0 -> 50026 bytes .../notes/\351\205\215\347\275\256.png" | Bin 0 -> 69089 bytes 39 files changed, 2044 insertions(+), 79 deletions(-) delete mode 100644 README.en.md rename go_base/{.keep => pkg/mod/cache/lock} (100%) create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo1/demo1.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo10/demo10.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo11/demo11.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo12/demo12.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo2/demo2.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo3/demo3.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo4/demo4.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo5/demo5.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo6/demo6.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo7/demo7.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo8/demo8.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo9/demo9.go" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/go.mod" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/1.\344\270\213\350\275\275\344\270\216\347\216\257\345\242\203\345\217\230\351\207\217\351\205\215\347\275\256.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/10.nil.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/11.\345\205\263\351\224\256\345\255\227.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/12.\345\207\275\346\225\260.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/2.\345\217\230\351\207\217\345\270\270\351\207\217.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/3.\346\225\260\347\273\204.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/4.\345\210\207\347\211\207.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/5.\346\214\207\351\222\210.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/6.\345\217\230\351\207\217\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/7.\347\261\273\345\236\213\345\210\253\345\220\215\343\200\201\345\205\263\351\224\256\345\255\227.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/8.\345\255\227\347\254\246\344\270\262\344\270\216\345\205\266\344\273\226\347\261\273\345\236\213\350\275\254\346\215\242.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/9.map.md" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPATH.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPROXY.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/PATH.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/goroot.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod_2.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\345\205\263\351\224\256\345\255\227.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\346\211\247\350\241\214.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\346\240\207\350\257\206\347\254\246.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\350\277\220\347\256\227\347\254\246.png" create mode 100644 "go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\351\205\215\347\275\256.png" diff --git a/README.en.md b/README.en.md deleted file mode 100644 index dd92840..0000000 --- a/README.en.md +++ /dev/null @@ -1,39 +0,0 @@ -# GO语言学习 - -#### Description -从零开始学习go语言,从入门到实战。 -记录学习笔记和示例 -基础语法、Gin框架、gRPC、gORM..... - - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index 91b1e42..b6961f7 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,44 @@ -# GO语言学习 - -#### 介绍 -从零开始学习go语言,从入门到实战。 -记录学习笔记和示例 -基础语法、Gin框架、gRPC、gORM..... - - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +# GO语言学习笔记 + +## 介绍 + +从零开始学习go语言,从入门到实战。 +记录学习笔记和示例 +基础语法、Gin框架、gRPC、gORM..... + +## Go语言历史 + +### 1.诞生时间 + +Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目, +即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。 + +### 2. 里程碑 + +- 2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。 +- 2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。 +- 2015年8月19日 ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick Hudson对GC进行重新设计(重要的修正) +- 2017年2月16日 , Go1.8版本发布 +- 2017年8月24日 , Go1.9版本发布 +- 2018年2月16日 , Go1.10版本发布 +- 2018年8月24日 , Go1.11版本发布 +- 2019年2月25日 , Go1.12版本发布 +- 2019年9月03日 , Go1.13版本发布 +- 2020年2月25日 , Go1.14版本发布 +- 2020年8月11日 , Go1.15版本发布 +- 2021年2月16日 , Go1.16版本发布 +- 2021年8月16日 , Go1.17版本发布 + +### 3. 为什么使用Go + +1. 简单好记的关键词和语法。轻松上手,简单易学。 +2. 更高的效率。比Java,C++等拥有更高的编译速度,同时运行效率媲美C,同时开发效率非常高。 +3. 生态强大,网络上库很丰富,很多功能使用Go开发非常简单。 +4. 语法检查严格,高安全性。 +5. 严格的依赖管理,go mod命令。 +6. Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。 +7. 跨平台交叉编译,windows就可以编译出mac,linux上可执行的程序。 +8. 异步编程复杂度低,易维护,GO 语言中 Channel 设计,异步程序写起来非常自然。 +9. 语言层面支持并发,`go关键字(协程)`使得go的并发效率极高。 +10. 严格的语法规范,所有程序员写出来的代码都是一样的,对大团队来说,非常友好。 +11. Go 的并发、性能、安全性、易于部署等特性,使它很容易成为“云原生语言”。容器和云的使用上非常广 diff --git a/go_base/.keep b/go_base/pkg/mod/cache/lock similarity index 100% rename from go_base/.keep rename to go_base/pkg/mod/cache/lock diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo1/demo1.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo1/demo1.go" new file mode 100644 index 0000000..9993170 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo1/demo1.go" @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Print("hello world") +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo10/demo10.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo10/demo10.go" new file mode 100644 index 0000000..f567d30 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo10/demo10.go" @@ -0,0 +1,40 @@ +package main + +import ( + "errors" + "fmt" +) + +func main() { + //invalid operation: nil == nil (operator == not defined on nil) + //fmt.Println(nil == nil) + + //不提倡这样做 + var nil = errors.New("my god") + fmt.Println("nil:", nil) + + //没有默认类型 + //fmt.Printf("%T", nil) + + //不同类型 nil 的指针是一样的 + var arr []int + var num *int + fmt.Printf("%p\n", arr) + fmt.Printf("%p", num) + fmt.Println() + //是 map、slice、pointer、channel、func、interface 的零值 + var m map[int]string + var ptr *int + var c chan int + var sl []int + var f func() + var i interface{} + + fmt.Printf("%#v\n", m) + fmt.Printf("%#v\n", ptr) + fmt.Printf("%#v\n", c) + fmt.Printf("%#v\n", sl) + fmt.Printf("%#v\n", f) + fmt.Printf("%#v\n", i) + +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo11/demo11.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo11/demo11.go" new file mode 100644 index 0000000..7356d11 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo11/demo11.go" @@ -0,0 +1,104 @@ +package main + +import ( + "errors" + "fmt" + "os" +) + +func length(s string) int { + println("call length.") + return len(s) +} + +func main() { + s := "abcd" + // 这样写会多次调佣length函数 + for i, n := 0, length(s); i < n; i++ { + println(i, s[i]) + } + +} + +//if else用法 +func ifElse() { + var a = 100 + var b = 200 + + if a == 100 { + if b == 200 { + fmt.Println("a 的值为 100 , b 的值为 200\n") + } + } +} + +//for用法 +func forTest() { + sum := 0 + for i := 0; i < 10; i++ { + sum += i + } + + for { + sum++ + if sum > 100 { + break + } + } + + n := 10 + for n > 0 { + n-- + fmt.Println(n) + } + + m := 2 + for ; m > 0; m-- { + fmt.Println(m) + } +} + +// 99乘法表 +func JjChenFa() { + // 遍历, 决定处理第几行 + for y := 1; y <= 9; y++ { + // 遍历, 决定这一行有多少列 + for x := 1; x <= y; x++ { + fmt.Printf("%d*%d=%d ", x, y, x*y) + } + // 手动生成回车 + fmt.Println() + } +} + +// goto用法 +func goToTest() { + err := firstCheckError() + if err != nil { + fmt.Println(err) + goto onExit + } + err = secondCheckError() + if err != nil { + fmt.Println(err) + goto onExit + } + fmt.Println("done") + return +onExit: + exitProcess() +} + +func firstCheckError() interface{} { + return errors.New("错误1") +} + +func secondCheckError() interface{} { + return errors.New("错误2") +} + +func exitProcess() { + fmt.Println("exit") + //退出 + os.Exit(1) +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo12/demo12.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo12/demo12.go" new file mode 100644 index 0000000..271f9b1 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo12/demo12.go" @@ -0,0 +1,132 @@ +package main + +import ( + "fmt" + "math" +) + +func main() { + fmt.Println(max(10, 5)) + + fmt.Println(test(5, 6, "和为:")) + + s1 := demo(fn) + fmt.Println(s1) + + s2 := format(formatFun, "%d, %d", 10, 20) + fmt.Println(s2) + + a, b := sum(30, 15) + fmt.Println(a, b) + + c, d, e := demo2() + fmt.Println(c, d, e) + + var f, g = 2, 3 + demo3(&f, &g) + fmt.Println(f, g) + + k := []int{1, 2, 3, 4, 5, 6} + res := demo4("sum: %d", k...) + fmt.Println(res) + + //匿名函数 + sqrt := func(a float64) float64 { + return math.Sqrt(a) + } + fmt.Println(sqrt(10)) + + //在定义时调用匿名函数 + func(data int) { + fmt.Println(data) + }(10) + + visit([]int{4, 5, 6}, func(v int) { + fmt.Println(v) + }) + + m, n := demo5(8, 6) + fmt.Println(m()) + fmt.Println(n(3)) + +} + +//基本写法 +func max(n1, n2 int) int { + if n1 > n2 { + return n1 + } + return n2 +} + +//返回多个值 +func test(x, y int, s string) (int, string) { + sum := x + y + return sum, fmt.Sprintf(s, sum) +} + +//函数作为参数 +func demo(fn func(int2 int) int) int { + return fn(30) +} + +func fn(int2 int) int { + return int2 +} + +// 定义函数类型 +type FormatFunc func(s string, x, y int) string + +func format(fn FormatFunc, s string, x, y int) string { + return fn(s, x, y) +} + +func formatFun(s string, x, y int) string { + return fmt.Sprintf(s, x, y) +} + +//多个返回值 +func sum(a, b int) (int, int) { + return a, b +} + +//返回值命名 +func demo2() (names []string, m map[string]int, num int) { + m = make(map[string]int) + m["a"] = 5 + + return +} + +//引用传递 +func demo3(x, y *int) { + *x, *y = *y, *x +} + +//不定参数 +func demo4(str string, n ...int) string { + var x int + for _, i := range n { + x += i + } + return fmt.Sprintf(str, x) +} + +//匿名函数用作回调函数 +func visit(list []int, f func(int)) { + for _, i := range list { + f(i) + } +} + +//返回多个匿名函数 +func demo5(x, y int) (func() int, func(int) int) { + sum2 := func() int { + return x + y + } + + avg := func(z int) int { + return (x + y) * z + } + return sum2, avg +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo2/demo2.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo2/demo2.go" new file mode 100644 index 0000000..e0b4152 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo2/demo2.go" @@ -0,0 +1,35 @@ +package main + +import "fmt" + +var name1 string = "老王" +var name2 = "老张" + +var num1, num2, num3 int32 = 10, 20, 30 + +//不能: +//name3 := "老唐" + +const aa string = "jay" +const bb = 100 + +const age1, age2, age3 int32 = 10, 11, 12 +const name4, weight2 = "Jerry", 130 + +func main() { + fmt.Println(name1, name2) + fmt.Println(num1, num2, num3) + //声明了一定要用 + name3 := "老唐" + fmt.Println(name3) + + fmt.Println(aa, bb) + fmt.Println(name4, weight2) + fmt.Println(age1, age2, age3) + + fmt.Print("输出到控制台不换行") + fmt.Println("---") + fmt.Println("输出到控制台并换行") + fmt.Printf("name=%s,age=%d\n", "Tom", 30) + fmt.Printf("name=%s,age=%d,height=%v\n", "Tom", 30, fmt.Sprintf("%.2f", 180.567)) +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo3/demo3.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo3/demo3.go" new file mode 100644 index 0000000..9fdb42b --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo3/demo3.go" @@ -0,0 +1,31 @@ +package main + +import "fmt" + +func main() { + //一维数组 + var arr1 int + fmt.Println(arr1) + + var arr2 = [3]int{1, 2, 3} + fmt.Println(arr2) + + arr3 := [3]int{1, 2, 3} + fmt.Println(arr3) + + arr4 := [...]int{1, 2, 3} + fmt.Println(arr4) + + arr5 := [...]int{0: 1, 2: 3} + fmt.Println(arr5) + + //二维数组 + var arr6 = [3][5]int{{1, 2, 3}, {3, 4, 5}, {6, 7, 8}} + fmt.Println(arr6) + + arr7 := [3][5]int{{1, 2, 3}, {3, 4, 5}, {6, 7, 8}} + fmt.Println(arr7) + + arr8 := [...][5]int{{1, 2, 3}, {3, 4, 5}, {6, 7, 8}, {1: 4, 3: 5, 4: 7}} + fmt.Println(arr8) +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo4/demo4.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo4/demo4.go" new file mode 100644 index 0000000..5ab7d3f --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo4/demo4.go" @@ -0,0 +1,54 @@ +package main + +import "fmt" + +func main() { + //声明切片 + var sli_1 []int //nil 切片 + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_1), cap(sli_1), sli_1) + + var sli_2 = []int{} + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_2), cap(sli_2), sli_2) + + var sli_3 = []int{1, 2, 3, 4, 5} + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_3), cap(sli_3), sli_3) + + sli_4 := []int{1, 2, 3, 4, 5} + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_4), cap(sli_4), sli_4) + + var sli_5 []int = make([]int, 5, 8) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_5), cap(sli_5), sli_5) + + sli_6 := make([]int, 5, 8) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_6), cap(sli_6), sli_6) + + //截取切片 + sli := []int{1, 2, 3, 4, 5, 6} + fmt.Println("sli[1] ==", sli[1]) + fmt.Println("sli[:] ==", sli[:]) + fmt.Println("sli[1:] ==", sli[1:]) + fmt.Println("sli[:4] ==", sli[:4]) + + fmt.Println("sli[2:4] ==", sli[2:4]) //左闭右开 + fmt.Println("sli[0:3:4] ==", sli[0:3:4]) + + //追加 + sli = append(sli, 7) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli), cap(sli), sli) + sli = append(sli, 8) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli), cap(sli), sli) + sli = append(sli, 9) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli), cap(sli), sli) + sli = append(sli, 10) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli), cap(sli), sli) + + //删除尾部两个元素 + sli_7 := sli[:len(sli)-2] + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_7), cap(sli_7), sli_7) + //删除开头两个元素 + sli_8 := sli[2:] + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_8), cap(sli_8), sli_8) + //删除中间 2 个元素 + sli_9 := append(sli[:3], sli[5:]...) + fmt.Printf("len=%d cap=%d slice=%v\n", len(sli_9), cap(sli_9), sli_9) +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo5/demo5.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo5/demo5.go" new file mode 100644 index 0000000..953b2c7 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo5/demo5.go" @@ -0,0 +1,43 @@ +package main + +import ( + "flag" + "fmt" +) + +// 定义命令行参数 +var mode = flag.String("mode", "say yes!!", "fast模式能让程序运行的更快") + +func main() { + // 指针示例 + var a int = 1010 + var ptr = &a + + fmt.Printf("%p\n", &a) + + fmt.Printf("%T %p\n", ptr, ptr) + fmt.Println("指针地址代表的值", *ptr) + // 指针换值 + var num1 = 10 + modifyFromPoint(num1) + fmt.Println("未使用指针,方法外", num1) + + var num2 = 20 + newModifyFromPoint(&num2) + fmt.Println("未使用指针,方法外", num2) + // new方法声明指针 + str := new(string) + *str = "hello" + fmt.Println("new方法声明指针:", *str) + + flag.Parse() + fmt.Println(*mode) +} + +func modifyFromPoint(num int) { + num = 1000 +} + +func newModifyFromPoint(ptr *int) { + *ptr = 1000 +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo6/demo6.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo6/demo6.go" new file mode 100644 index 0000000..6bb3d5f --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo6/demo6.go" @@ -0,0 +1,19 @@ +package main + +var global *int + +func main() { + f() + + g() +} + +func f() { + var x int + x = 1 + global = &x +} +func g() { + y := new(int) + *y = 1 +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo7/demo7.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo7/demo7.go" new file mode 100644 index 0000000..13568ad --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo7/demo7.go" @@ -0,0 +1,23 @@ +package main + +import ( + "fmt" +) + +// 将NewInt定义为int类型 +type NewInt int + +// 将int取一个别名叫IntAlias +type IntAlias = int + +func main() { + // 将a声明为NewInt类型 + var a1 NewInt + // 查看a的类型名 main.NewInt + fmt.Printf("a1 type: %T\n", a1) + // 将a2声明为IntAlias类型 + var a2 IntAlias + // 查看a2的类型名 int + //IntAlias 类型只会在代码中存在,编译完成时,不会有 IntAlias 类型。 + fmt.Printf("a2 type: %T\n", a2) +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo8/demo8.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo8/demo8.go" new file mode 100644 index 0000000..0152090 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo8/demo8.go" @@ -0,0 +1,29 @@ +package main + +import ( + "fmt" + "strconv" +) + +func main() { + // str 转 int + newStr1 := "1" + intValue, _ := strconv.Atoi(newStr1) + fmt.Printf("%T,%d\n", intValue, intValue) + + // int 转 str + intValue2 := 2 + strValue := strconv.Itoa(intValue2) + fmt.Printf("%T,%s\n", strValue, strValue) + + // str 转 float + string3 := "3.1415926" + f, _ := strconv.ParseFloat(string3, 64) + fmt.Printf("%T, %f\n", f, f) + + //float 转 string + floatValue := 3.1415926 + formatFloat := strconv.FormatFloat(floatValue, 'f', 8, 64) + fmt.Printf("%T,%s", formatFloat, formatFloat) + +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo9/demo9.go" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo9/demo9.go" new file mode 100644 index 0000000..25d88ba --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/demo9/demo9.go" @@ -0,0 +1,35 @@ +package main + +import "fmt" + +func main() { + //map声明 + var mapLit map[string]int + var mapVal map[string]int + + mapLit = map[string]int{"a": 1, "b": 2, "c": 3} + mapVal = mapLit + //mapVal 是 mapList 的引用 + mapVal["c"] = 4 + + fmt.Printf("Map literal at \"a\" is: %d\n", mapLit["a"]) + fmt.Printf("Map literal at \"b\" is: %d\n", mapVal["b"]) + fmt.Printf("Map literal at \"c\" is: %d\n", mapLit["c"]) + + //循环遍历 + scene := make(map[string]int, 10) + scene["dog"] = 11 + scene["cat"] = 20 + scene["pig"] = 30 + + for k, v := range scene { + fmt.Printf("name:%s,num:%d\n", k, v) + } + fmt.Println() + //删除 + delete(scene, "cat") + for k, v := range scene { + fmt.Printf("name:%s,num:%d\n", k, v) + } + +} diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/go.mod" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/go.mod" new file mode 100644 index 0000000..bfdb7d5 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/code/go.mod" @@ -0,0 +1,3 @@ +module code + +go 1.17 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/1.\344\270\213\350\275\275\344\270\216\347\216\257\345\242\203\345\217\230\351\207\217\351\205\215\347\275\256.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/1.\344\270\213\350\275\275\344\270\216\347\216\257\345\242\203\345\217\230\351\207\217\351\205\215\347\275\256.md" new file mode 100644 index 0000000..66a66c4 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/1.\344\270\213\350\275\275\344\270\216\347\216\257\345\242\203\345\217\230\351\207\217\351\205\215\347\275\256.md" @@ -0,0 +1,62 @@ +## 目标 +1. 安装完成 + +2. 成功运行hello world + +## Go下载安装 + + 官方二进制发行版可在[https://go.dev/dl/] + + 下载二进制版本后,请访问[https://go.dev/doc/install] + + 如果二进制发行版不适用于您的操作系统和体系结构组合,请访问[https://go.dev/doc/install/source] + +## 环境变量配置 +1. GOROOT:go语言所在的目录,用于全局执行go相关的命令 +![img.png](goroot.png) + path中也需要配置 +![img_1.png](PATH.png) +2. GOPATH:工作目录,工程代码存放的位置,此目录下,一个文件夹就是一个工程 +![img.png](GOPATH.png) +3. GOPROXY:代理,由于go需要翻墙使用,需要配置代理 +![img.png](GOPROXY.png) + 地址:https://goproxy.io/zh/ 可以去看文档 +4. 检查环境变量的配置是否正确 + + `使用命令行执行:go env` +![img.png](配置.png) + + +## hello world + +1. 在路径下,新建一个文件夹hello,进入这个文件夹 +2. 运行命令: go mod init hello + ![img.png](mod.png) +3. 生成mod文件,如果学过maven的话,可以将其当成maven的pom.xml,用于管理依赖的 + ![img_1.png](mod_2.png) + +4. 新建main.go,输入以下内容: + + // package 定义包名 main 包名 + package main + + // import 引用库 fmt 库名 + import "fmt" + + // func 定义函数 main 函数名 + func main() { + + // fmt 包名 . 调用 Print 函数,并且输出定义的字符串 + fmt.Print("Hello World!!") + } +5. 执行命令:go run main.go + ![img.png](执行.png) + +## 开发工具 + + GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境, + 与我们用的 WebStorm、PhpStorm、PyCharm 是一家,同样支持 Windows、Linux、macOS 等操作系统。 + + 下载地址:https://www.jetbrains.com/go/ + + 软件是付费的,不过想想办法,软件可以永久激活的。 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/10.nil.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/10.nil.md" new file mode 100644 index 0000000..3c68c21 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/10.nil.md" @@ -0,0 +1,100 @@ +## 概述 +在Go语言中,布尔类型的零值(初始值)为 false,数值类型的零值为 0,字符串类型的零值为空字符串`""`,而指针、切片、映射、通道、函数和接口的零值则是 nil。 + +**nil 标识符不能比较** + + package main + import ( + "fmt" + ) + + func main() { + //invalid operation: nil == nil (operator == not defined on nil) + fmt.Println(nil==nil) + } + +**nil 不是关键字或保留字** + + //不提倡这样做 + var nil = errors.New("my god") + +**nil 没有默认类型** + + package main + import ( + "fmt" + ) + + func main() { + //error :use of untyped nil + fmt.Printf("%T", nil) + print(nil) + } + +**不同类型 nil 的指针是一样的** + + package main + import ( + "fmt" + ) + + func main() { + var arr []int + var num *int + fmt.Printf("%p\n", arr) + fmt.Printf("%p", num) + } + +**nil 是 map、slice、pointer、channel、func、interface 的零值** + + package main + import ( + "fmt" + ) + + func main() { + var m map[int]string + var ptr *int + var c chan int + var sl []int + var f func() + var i interface{} + + fmt.Printf("%#v\n", m) + fmt.Printf("%#v\n", ptr) + fmt.Printf("%#v\n", c) + fmt.Printf("%#v\n", sl) + fmt.Printf("%#v\n", f) + fmt.Printf("%#v\n", i) + } + +**不同类型的 nil 值占用的内存大小可能是不一样的** + + package main + import ( + "fmt" + "unsafe" + ) + + func main() { + var p *struct{} + fmt.Println( unsafe.Sizeof( p ) ) // 8 + var s []int + fmt.Println( unsafe.Sizeof( s ) ) // 24 + var m map[int]bool + fmt.Println( unsafe.Sizeof( m ) ) // 8 + var c chan string + fmt.Println( unsafe.Sizeof( c ) ) // 8 + var f func() + fmt.Println( unsafe.Sizeof( f ) ) // 8 + var i interface{} + fmt.Println( unsafe.Sizeof( i ) ) // 16 + } + +## new和make + +make 关键字的主要作用是创建 slice、map 和 Channel 等内置的数据结构,而 new 的主要作用是为类型申请一片内存空间,并返回指向这片内存的指针。 + +1. make 分配空间后,会进行初始化,new分配的空间被清零 +2. new 分配返回的是指针,即类型 *Type。make 返回引用,即 Type; +3. new 可以分配任意类型的数据; \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/11.\345\205\263\351\224\256\345\255\227.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/11.\345\205\263\351\224\256\345\255\227.md" new file mode 100644 index 0000000..ed4acdd --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/11.\345\205\263\351\224\256\345\255\227.md" @@ -0,0 +1,415 @@ +## if else +关键字` if `是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号`{}`括起来的代码块,否则就忽略该代码块继续执行后续的代码。 + + if condition { + // 条件为真 执行 + } else { + // 条件不满足 执行 + } + +如果存在第三个分支,则可以使用下面这种三个独立分支的形式: + + if condition1 { + // condition1 满足 执行 + } else if condition2 { + // condition1 不满足 condition2满足 执行 + }else { + // condition1和condition2都不满足 执行 + } + +**if语句可以嵌套** + + /* 定义局部变量 */ + var a int = 100 + var b int = 200 + + /* 判断条件 */ + if a == 100 { + /* if 条件语句为 true 执行 */ + if b == 200 { + /* if 条件语句为 true 执行 */ + fmt.Printf("a 的值为 100 , b 的值为 200\n" ) + } + } + +### 特殊写法 + +if 还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断: + + if a := 10; a >5 { + fmt.Println(a) + return + } + +## for + +**go语言中的循环语句只支持 for 关键字** + +第一种写法: + + sum := 0 + //i := 0; 赋初值,i<10 循环条件 如果为真就继续执行 ;i++ 后置执行 执行后继续循环 + for i := 0; i < 10; i++ { + sum += i + } + +第二种写法: + + sum := 0 + for { + sum++ + if sum > 100 { + //break是跳出循环 + break + } + } + +第三种写法: + + n := 10 + for n>0 { + n-- + fmt.Println(n) + } + +特殊写法: + + step := 2 + //初值可以省略,但是;必须有,但是这样写step的作用域就比较大了,脱离了for循环 + for ; step > 0; step-- { + fmt.Println(step) + } + +**结束循环的方式:** + +1.return + + step := 2 + for step > 0 { + step-- + fmt.Println(step) + //执行一次就结束了 + return + } + //不会执行 + fmt.Println("结束之后的语句....") + +2.break + + step := 2 + for step > 0 { + step-- + fmt.Println(step) + //跳出循环,还会继续执行循环外的语句 + break + } + //会执行 + fmt.Println("结束之后的语句....") + +3.painc + + step := 2 + for step > 0 { + step-- + fmt.Println(step) + //报错了,直接结束 + panic("出错了") + } + //不会执行 + fmt.Println("结束之后的语句....") + +4.goto + + package main + import "fmt" + func main() { + for x := 0; x < 10; x++ { + for y := 0; y < 10; y++ { + if y == 2 { + // 跳转到标签 + goto breakHere + } + } + } + // 手动返回, 避免执行进入标签 + return + // 标签 + breakHere: + fmt.Println("done") + } + +### 九九乘法表 + + package main + import "fmt" + func main() { + // 遍历, 决定处理第几行 + for y := 1; y <= 9; y++ { + // 遍历, 决定这一行有多少列 + for x := 1; x <= y; x++ { + fmt.Printf("%d*%d=%d ", x, y, x*y) + } + // 手动生成回车 + fmt.Println() + } + } + +## for range +for range 结构是Go语言特有的一种的迭代结构,for range 可以遍历数组、切片、字符串、map 及管道(channel) + + for key, val := range coll { + ... + } + +遍历map: + + m := map[string]int{ + "hello": 100, + "world": 200, + } + for key, value := range m { + fmt.Println(key, value) + } + +字符串也可以: + + str := "你好go" + //因为一个字符串是 Unicode 编码的字符(或称之为 rune )集合 + //char 实际类型是 rune 类型 + for pos, char := range str { + fmt.Println(pos,char) + } + +通过 for range 遍历的返回值有一定的规律: + +- 数组、切片、字符串返回索引和值。 +- map 返回键和值。 +- channel只返回管道内的值。 + + +## switch + +switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。 + +switch 分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。 + +switch 语句的语法: + + switch var1 { + case val1: + ... + case val2: + ... + default: + ... + } + +### 例: + /* 定义局部变量 */ + var grade string = "B" + var score int = 90 + + switch score { + case 90: grade = "A" + case 80: grade = "B" + case 50,60,70 : grade = "C" + default: grade = "D" + } + //swtich后面如果没有条件表达式,则会对true进行匹配 + switch { + case grade == "A" : + fmt.Printf("优秀!\n" ) + case grade == "B", grade == "C" : + fmt.Printf("良好\n" ) + case grade == "D" : + fmt.Printf("及格\n" ) + case grade == "F": + fmt.Printf("不及格\n" ) + default: + fmt.Printf("差\n" ) + } + fmt.Printf("你的等级是 %s\n", grade ) + + +**fallthrough** + + var s = "hello" + switch { + case s == "hello": + fmt.Println("hello") + fallthrough + case s != "world": + fmt.Println("world") + } + +**加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行。** + +## goto + +goto 语句通过标签进行代码间的无条件跳转,同时 goto 语句在快速跳出循环、避免重复退出上也有一定的帮助,使用 goto 语句能简化一些代码的实现过程。 + +传统写法: + + package main + import "fmt" + func main() { + var breakAgain bool + // 外循环 + for x := 0; x < 10; x++ { + // 内循环 + for y := 0; y < 10; y++ { + // 满足某个条件时, 退出循环 + if y == 2 { + // 设置退出标记 + breakAgain = true + // 退出本次循环 + break + } + } + // 根据标记, 还需要退出一次循环 + if breakAgain { + break + } + } + fmt.Println("done") + } + +使用goto的写法: + + package main + import "fmt" + func main() { + for x := 0; x < 10; x++ { + for y := 0; y < 10; y++ { + if y == 2 { + // 跳转到标签 + goto breakHere + } + } + } + // 手动返回, 避免执行进入标签 + return + // 标签 + breakHere: + fmt.Println("done") + } + +**使用 goto 集中处理错误** + +多处错误处理 `存在代码重复` 例如: + + package main + import ( + "errors" + "fmt" + "os" + ) + + func main() { + err := firstCheckError() + if err != nil { + fmt.Println(err) + exitProcess() + } + err = secondCheckError() + if err != nil { + fmt.Println(err) + exitProcess() + } + fmt.Println("done") + } + + func secondCheckError() interface{} { + return errors.New("错误2") + } + + func exitProcess() { + //退出 + os.Exit(1) + } + + func firstCheckError() interface{} { + return errors.New("错误1") + } + +使用goto: + + package main + import ( + "errors" + "fmt" + "os" + ) + + func main() { + err := firstCheckError() + if err != nil { + fmt.Println(err) + goto onExit + } + err = secondCheckError() + if err != nil { + fmt.Println(err) + goto onExit + } + fmt.Println("done") + return + onExit: + exitProcess() + } + + func secondCheckError() interface{} { + return errors.New("错误2") + } + + func exitProcess() { + fmt.Println("exit") + //退出 + os.Exit(1) + } + + func firstCheckError() interface{} { + return errors.New("错误1") + } + +## break +break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加`标签`,表示退出某个标签对应的代码块,`标签`要求必须定义在对应的 `for`、`switch` 和 `select `的代码块上。 + +### 例: + + package main + import "fmt" + func main() { + OuterLoop: + for i := 0; i < 2; i++ { + for j := 0; j < 5; j++ { + switch j { + case 2: + fmt.Println(i, j) + break OuterLoop + case 3: + fmt.Println(i, j) + break OuterLoop + } + } + } + } + +## continue + +continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加`标签`时,表示开始`标签对应的循环` + + package main + import "fmt" + func main() { + OuterLoop: + for i := 0; i < 2; i++ { + for j := 0; j < 5; j++ { + switch j { + case 2: + fmt.Println(i, j) + continue OuterLoop + } + } + } + } \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/12.\345\207\275\346\225\260.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/12.\345\207\275\346\225\260.md" new file mode 100644 index 0000000..e228574 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/12.\345\207\275\346\225\260.md" @@ -0,0 +1,276 @@ +## 函数 +Go 语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 + +Go 语言的函数属于“一等公民”(first-class),也就是说: + +- 函数本身可以作为值进行传递。 +- 支持匿名函数和闭包(closure)。 +- 函数可以满足接口。 + +**函数定义:** + + func function_name( [parameter list] ) [return_types] { + 函数体 + } + +**示例:** + + package main + + import "fmt" + + func main() { + fmt.Println(max(1, 10)) + fmt.Println(max(-1, -2)) + } + //类型相同的相邻参数,参数类型可合并。 + func max(n1, n2 int) int { + if n1 > n2 { + return n1 + } + return n2 + } + +**返回值可以为多个:** + + func test(x, y int, s string) (int, string) { + // 类型相同的相邻参数,参数类型可合并。 多返回值必须用括号。 + n := x + y + return n, fmt.Sprintf(s, n) + } + +### 1.函数作为参数 + +**例:** + + func test(fn func() int) int { + return fn() + } + func fn() int{ + return 200 + } + func main() { + //这是直接使用匿名函数 + s1 := test(func() int { return 100 }) + //这是传入一个函数 + s1 := test(fn) + fmt.Println(s1) + } + +**在将函数做为参数的时候,我们可以使用类型定义,将函数定义为类型,这样便于阅读** + + // 定义函数类型。 + + type FormatFunc func(s string, x, y int) string + + func format(fn FormatFunc, s string, x, y int) string { + return fn(s, x, y) + } + func formatFun(s string,x,y int) string { + return fmt.Sprintf(s,x,y) + } + func main() { + s2 := format(formatFun,"%d, %d",10,20) + fmt.Println(s2) + } + +**有返回值的函数,必须有明确的终止语句** + +### 2. 函数返回值 + +函数返回值可以有多个,同时Go支持对返回值命名 + +**例:** + + //多个返回值 用括号扩起来 + func sum(a,b int) (int,int) { + return a,b + } + func main(){ + a,b := sum(2,3) + fmt.Println(a,b) + } + + + package main + + import "fmt" + //支持返回值命名 ,默认值为类型零值,命名返回参数可看做与形参类似的局部变量, + 由return隐式返回 + func f1() (names []string, m map[string]int, num int) { + m = make(map[string]int) + m["k1"] = 2 + + return + } + + func main() { + a, b, c := f1() + fmt.Println(a, b, c) + } + +### 3. 参数 +函数定义时指出,函数定义时有参数,该变量可称为函数的形参。 + +函数可以通过两种方式来传递参数: + +1.值传递:指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 + + func swap(x, y int) int { + ... ... + } + +2.引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 + + package main + + import ( + "fmt" + ) + + /* 定义相互交换值的函数 */ + func swap(x, y *int) { + *x,*y = *y,*x + } + + func main() { + var a, b int = 1, 2 + /* + 调用 swap() 函数 + &a 指向 a 指针,a 变量的地址 + &b 指向 b 指针,b 变量的地址 + */ + swap(&a, &b) + + fmt.Println(a, b) + } + +**不定参数传值** + +不定参数传值就是函数的参数不是固定的,后面的类型是固定的(可变参数)。 + +在参数赋值时可以不用用一个一个的赋值,可以直接传递一个数组或者切片。 + +格式: + + func myfunc(args ...int) { //0个或多个参数 + } + + func add(a int, args…int) int { //1个或多个参数 + } + + func add(a int, b int, args…int) int { //2个或多个参数 + } + +**注意:其中args是一个slice,我们可以通过arg[index]依次访问所有参数,通过len(arg)来判断传递参数的个数.** + +**例:** + + package main + + import ( + "fmt" + ) + + func test(s string, n ...int) string { + var x int + for _, i := range n { + x += i + } + return fmt.Sprintf(s, x) + } + + func main() { + s := []int{1, 2, 3} + res := test("sum: %d", s...) // slice... 展开slice + println(res) + } + +## 匿名函数 + +### 概述 +匿名函数是指不需要定义函数名的一种函数实现方式。 + +匿名函数由一个不带函数名的函数声明和函数体组成。匿名函数的优越性在于可以直接使用函数内的变量,不必声明。 + +匿名函数的定义格式: + + func(参数列表)(返回参数列表){ + 函数体 + } + +**例:** + + package main + + import ( + "fmt" + "math" + ) + + func main() { + //这里将一个函数当做一个变量一样的操作。 + getSqrt := func(a float64) float64 { + return math.Sqrt(a) + } + fmt.Println(getSqrt(4)) + } + +**在定义时调用匿名函数** + +**例:** + + func(data int) { + fmt.Println("hello", data) + }(100) //(100),表示对匿名函数进行调用,传递参数为 100。 + +**匿名函数用作回调函数** + +**例:** + + package main + import ( + "fmt" + ) + // 遍历切片的每个元素, 通过给定函数进行元素访问 + func visit(list []int, f func(int)) { + for _, v := range list { + f(v) + } + } + func main() { + // 使用匿名函数打印切片内容 + visit([]int{1, 2, 3, 4}, func(v int) { + fmt.Println(v) + }) + } + +**返回多个匿名函数** + +**例:** + + package main + + import "fmt" + + func FGen(x, y int) (func() int, func(int) int) { + + //求和的匿名函数 + sum := func() int { + return x + y + } + + // (x+y) *z 的匿名函数 + avg := func(z int) int { + return (x + y) * z + } + return sum, avg + } + + func main() { + + f1, f2 := FGen(1, 2) + fmt.Println(f1()) + fmt.Println(f2(3)) + } + diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/2.\345\217\230\351\207\217\345\270\270\351\207\217.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/2.\345\217\230\351\207\217\345\270\270\351\207\217.md" new file mode 100644 index 0000000..5626697 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/2.\345\217\230\351\207\217\345\270\270\351\207\217.md" @@ -0,0 +1,125 @@ +## 数据类型 +这篇文章主要涉及 字符串、布尔、数字 + +### 1.字符串:string +只能用一对双引号("")或反引号(``)括起来定义,不能用单引号('')定义! + +go语言从底层就支持UTF-8编码。 + + var mystr string = "hello" + +字符串是字节的定长数组,byte 和 rune 都是字符类型,若多个字符放在一起,就组成了字符串 + + import ( + "fmt" + ) + + func main() { + var mystr01 string = "hello" + var mystr02 [5]byte = [5]byte{104, 101, 108, 108, 111} + fmt.Printf("myStr01: %s\n", mystr01) + fmt.Printf("myStr02: %s", mystr02) + } + +### 2.布尔:bool + var 变量名 bool +只有 true 和 false,默认为 false。 + +### 3.数字 +#### 3.1 整型 + + - 有符号整型:int、int8、int64、int32、int64 范围:-2^(n-1) 到 2^(n-1)-1 + - 无符号整型:uint、uint8、uint64、uint32、uint64、uintptr 范围: 0 到 2^n-1 + + 具体长度取决于 CPU 位数。 + +#### 3.2 浮点型 + + float32 float64 + **通常应该优先使用 float64 类型 + +## 4.字符型 + + - 一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。 + - 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。 + rune 类型等价于 int32 类型。 + +### byte 类型是 uint8 的别名,rune 类型是int32的别名 + + //使用单引号 表示一个字符 + var ch byte = 'A' + //在 ASCII 码表中,A 的值是 65,也可以这么定义 + var ch byte = 65 + //65使用十六进制表示是41,所以也可以这么定义 \x 总是紧跟着长度为 2 的 16 进制数 + var ch byte = '\x41' + //65的八进制表示是101,所以使用八进制定义 \后面紧跟着长度为 3 的八进制数 + var ch byte = '\101' + + fmt.Printf("%c",ch) + +## 变量声明 + 一、单个变量声明 + + 1.var 变量名称 数据类型 = 变量值 + + 如果不赋值,使用的是该数据类型的默认值。 + + 2.var 变量名称 = 变量值 + + 根据变量值,自行判断数据类型。 + + 3.变量名称 := 变量值 + + 省略了 var 和数据类型,变量名称一定要是未声明过的。 + + 二、多个变量声明 + + 1.var 变量名称,变量名称 ... ,数据类型 = 变量值,变量值 ... + + 2.var 变量名称,变量名称 ... = 变量值,变量值 ... + + 3.变量名称,变量名称 ... := 变量值,变量值 ... + +## 常量声明 + 常量,在程序编译阶段就确定下来的值,而程序在运行时无法改变该值。 + + 一、单个常量声明 + + 1.const 变量名称 数据类型 = 变量值 + + 如果不赋值,使用的是该数据类型的默认值。 + + 2.const 变量名称 = 变量值 + + 根据变量值,自行判断数据类型。 + + 二、多个常量声明 + + 1.const 变量名称,变量名称 ... ,数据类型 = 变量值,变量值 ... + + 2.const 变量名称,变量名称 ... = 变量值,变量值 ... + + 三、常量生成器iota + + 在一个 const 声明语句中,在第一个声明的常量所在的行,iota 将会被置为 0,然后在每一个有常量声明的行加1 + + 例: + + const ( + Sunday = iota //0 + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday //6 + ) + +## 输出方法 + fmt.Print:输出到控制台(仅只是输出) + + fmt.Println:输出到控制台并换行 + + fmt.Printf:仅输出格式化的字符串和字符串变量(整型和整型变量不可以) + + fmt.Sprintf:格式化并返回一个字符串,不输出。 \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/3.\346\225\260\347\273\204.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/3.\346\225\260\347\273\204.md" new file mode 100644 index 0000000..ab38405 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/3.\346\225\260\347\273\204.md" @@ -0,0 +1,33 @@ +## 数组 + 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成, +声明后数组的长度就固定了,不能动态变化。 + +注: +len() 和 cap() 返回结果始终一样。 + +## 声明数组 + +一维数组: + + var arr_1 [5] int + + var arr_2 = [5] int {1, 2, 3, 4, 5} + + arr_3 := [5] int {1, 2, 3, 4, 5} + + arr_4 := [...] int {1, 2, 3, 4, 5, 6} + + arr_5 := [5] int {0:3, 1:5, 4:6} + +二维数组: + + var arr_6 = [3][5] int {{1, 2, 3, 4, 5}, {9, 8, 7, 6, 5}, {3, 4, 5, 6, 7}} + + arr_7 := [3][5] int {{1, 2, 3, 4, 5}, {9, 8, 7, 6, 5}, {3, 4, 5, 6, 7}} + + arr_8 := [...][5] int {{1, 2, 3, 4, 5}, {9, 8, 7, 6, 5}, {0:3, 1:5, 4:6}} + +## 注意事项 +#### 一、数组不可动态变化问题,一旦声明了,长度固定,不能添加。 +#### 二、数组是值类型问题,在函数中传递值的时候,如果传递数组大,内存耗损大。 +#### 三、数组赋值问题,同样类型的数组(长度一样且每个元素类型也一样)才可以相互赋值,反之不可以。 \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/4.\345\210\207\347\211\207.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/4.\345\210\207\347\211\207.md" new file mode 100644 index 0000000..c8b1f82 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/4.\345\210\207\347\211\207.md" @@ -0,0 +1,69 @@ +## 切片 +切片是一种动态数组,比数组操作灵活,长度不固定,可以进行追加和删除。 + +注: +len() 和 cap() 返回结果可相同和不同。 + +## 切片声明 + + var sli_1 [] int //nil 切片 + + var sli_2 = [] int {} //空切片 + + var sli_3 = [] int {1, 2, 3, 4, 5} + + sli_4 := [] int {1, 2, 3, 4, 5} + + var sli_5 [] int = make([] int, 5, 8) + + sli_6 := make([] int, 5, 9) + +## 截取切片 + + sli := [] int {1, 2, 3, 4, 5, 6} + + fmt.Println("sli[1] ==", sli[1]) + fmt.Println("sli[:] ==", sli[:]) + fmt.Println("sli[1:] ==", sli[1:]) + fmt.Println("sli[:4] ==", sli[:4]) + + fmt.Println("sli[0:3] ==", sli[0:3]) //左闭右开 + fmt.Println("sli[0:3:4] ==", sli[0:3:4]) + +## 追加切片 + + sli := [] int {4, 5, 6} + + sli = append(sli, 7) + sli = append(sli, 8) + sli = append(sli, 9) + sli = append(sli, 10) + +注: +append 时,切片声明容量不够需要扩容时,cap 会翻倍。 + +## 删除切片 + + sli := [] int {1, 2, 3, 4, 5, 6, 7, 8} + + //删除尾部两个元素 + sli[:len(sli)-2] + //删除开头两个元素 + sli[2:] + //删除中间 2 个元素 + sli = append(sli[:3], sli[3+2:]...) + +## 切片复制 + +copy() 函数的使用格式: + + copy( destSlice, srcSlice []T) int + +### 例: + slice1 := []int{1, 2, 3, 4, 5} + slice2 := []int{5, 4, 3} + copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 + copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 + + + diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/5.\346\214\207\351\222\210.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/5.\346\214\207\351\222\210.md" new file mode 100644 index 0000000..e9c65c6 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/5.\346\214\207\351\222\210.md" @@ -0,0 +1,85 @@ +## 概述 +指针(pointer)在Go语言中可以被拆分为两个核心概念: + +- 类型指针,允许对这个指针类型的数据进行修改、传递数据,无须拷贝数据,类型指针不能进行偏移和运算。 +- 切片,由指向起始元素的原始指针、元素数量和容量组成。 + +### 1、 如何理解指针 + + var a int = 10 +在内存中开辟了一片空间,空间内存放着数值10,这片空间在整个内存当中,有一个唯一的地址,用来进行标识, +指向这个地址的变量就称为指针 + +当一个指针被定义,没有分配到任何变量时,它的默认值为 nil。 + +Go语言中使用在变量名前面添加`&`操作符(前缀)来获取变量的内存地址(取地址操作) + + //v 代表被取地址的变量,变量 v 的地址使用变量 ptr 进行接收,ptr 的类型为*T,称做 T 的指针类型,*代表指针。 + ptr := &v + +当使用`&`操作符对普通变量进行取地址操作并得到变量的指针后,可以对指针使用`*`操作符,也就是指针取值 + + // 指针与变量 + var room int = 10 // room房间 里面放的 变量10 + var ptr = &room // 门牌号px 指针 0xc00000a0a8 + + fmt.Printf("%p\n", &room) // 变量的内存地址 0xc00000a0a8 + + fmt.Printf("%T, %p\n", ptr, ptr) // *int, 0xc00000a0a8 + + fmt.Println("指针地址",ptr) // 0xc00000a0a8 + fmt.Println("指针地址代表的值", *ptr) // 10 + +### 2、 使用指针修改值 + + func main(){ + // 利用指针修改值 + var num = 10 + modifyFromPoint(num) + fmt.Println("未使用指针,方法外",num) + + var num2 = 22 + newModifyFromPoint(&num2) // 传入指针 + fmt.Println("使用指针 方法外",num2) + } + + func modifyFromPoint(num int) { + // 未使用指针 + num = 10000 + fmt.Println("未使用指针,方法内:",num) + } + + func newModifyFromPoint(ptr *int) { + // 使用指针 + *ptr = 1000 // 修改指针地址指向的值 + fmt.Println("使用指针,方法内:",*ptr) + } + +### 3、 创建指针的另一种方法 + + new(类型) + +new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值。 + + str := new(string) + *str = "hello" + fmt.Println(*str) + +### 4、 指针小案例 + +Go语言内置的 flag 包实现了对命令行参数的解析,flag 包使得开发命令行工具更为简单。 + + package main + // 导入系统包 + import ( + "flag" + "fmt" + ) + // 定义命令行参数 + var mode = flag.String("mode", "", "fast模式能让程序运行的更快") + + func main() { + // 解析命令行参数 + flag.Parse() + fmt.Println(*mode) + } \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/6.\345\217\230\351\207\217\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/6.\345\217\230\351\207\217\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" new file mode 100644 index 0000000..73d62ae --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/6.\345\217\230\351\207\217\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" @@ -0,0 +1,39 @@ +## 概述 + + 变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。 + +变量的生命周期与变量的作用域有不可分割的联系: + +1. 全局变量:它的生命周期和整个程序的运行周期是一致的; +2. 局部变量:它的生命周期则是动态的,从创建这个变量的声明语句开始,到这个变量不再被引用为止; +3. 形式参数和函数返回值:它们都属于局部变量,在函数被调用的时候创建,函数调用结束后被销毁。 + + +go的内存中应用了两种数据结构用于存放变量: + +1. 堆(heap):堆是用于存放进程执行中被动态分配的内存段。它的大小并不固定,可动态扩张或缩减。当进程调用 malloc 等函数分配内存时, +新分配的内存就被动态加入到堆上(堆被扩张)。当利用 free 等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减); +2. 栈(stack):栈又称堆栈, 用来存放程序暂时创建的局部变量,也就是我们函数的大括号`{ }`中定义的局部变量。 + + + 栈是先进后出,往栈中放元素的过程,称为入栈,取元素的过程称为出栈。 + 栈可用于内存分配,栈的分配和回收速度非常快 + + +### 例: + + var global *int + func f() { + var x int + x = 1 + global = &x + } + func g() { + y := new(int) + *y = 1 + } + +上述代码中,函数 f 里的变量 x 必须在堆上分配,因为它在函数退出后依然可以通过包一级的 global 变量找到,虽然它是在函数内部定义的。 + +相反,当函数 g 返回时,变量 y 不再被使用,也就是说可以马上被回收的。因此,y 并没有从函数 g 中逃逸,编译器可以选择在栈上分配 *y 的存储空间, +也可以选择在堆上分配,然后由Go语言的 GC(垃圾回收机制)回收这个变量的内存空间。 \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/7.\347\261\273\345\236\213\345\210\253\345\220\215\343\200\201\345\205\263\351\224\256\345\255\227.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/7.\347\261\273\345\236\213\345\210\253\345\220\215\343\200\201\345\205\263\351\224\256\345\255\227.md" new file mode 100644 index 0000000..5ed8bbb --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/7.\347\261\273\345\236\213\345\210\253\345\220\215\343\200\201\345\205\263\351\224\256\345\255\227.md" @@ -0,0 +1,73 @@ +## 类型别名 + + 类型别名是 Go 1.9 版本添加的新功能, + 主要用于解决代码升级、迁移中存在的类型兼容性问题。 + +别名格式: + + //TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类型 + type TypeAlias = Type + +类型定义: + + //定义Name为Type类型 ,定义之后 Name为一种新的类型 + type Name Type + +类型别名和类型定义的区别: + + package main + import ( + "fmt" + ) + // 将NewInt定义为int类型 + type NewInt int + // 将int取一个别名叫IntAlias + type IntAlias = int + + func main() { + // 将a声明为NewInt类型 + var a NewInt + // 查看a的类型名 main.NewInt + fmt.Printf("a type: %T\n", a) + // 将a2声明为IntAlias类型 + var a2 IntAlias + // 查看a2的类型名 int + //IntAlias 类型只会在代码中存在,编译完成时,不会有 IntAlias 类型。 + fmt.Printf("a2 type: %T\n", a2) + } + +## 关键字 + +Go语言中的关键字一共有 25 个: + +![img.png](关键字.png) + +## 标识符 + +标识符是指Go语言对各种变量、方法、函数等命名时使用的字符序列,标识符由若干个字母、下划线`_`、和数字组成,且第一个字符必须是字母。 + +*下划线`_`是一个特殊的标识符,称为空白标识符* + +标识符的命名需要遵守以下规则: + +- 由 26 个英文字母、0~9、`_`组成; +- 不能以数字开头,例如 `var 1num int `是错误的; +- Go语言中严格区分大小写; +- 标识符不能包含空格; +- 不能以系统保留关键字作为标识符,比如 break,if 等等。 + +命名标识符时还需要注意以下几点: + +- 标识符的命名要尽量采取简短且有意义; +- 不能和标准库中的包名重复; +- 为变量、函数、常量命名时采用驼峰命名法,例如 stuName、getVal; + +在Go语言中还存在着一些特殊的标识符,叫做预定义标识符,如下表所示: + +![img.png](标识符.png) + +## 运算符优先级 + +![img.png](运算符.png) + +_**优先级值越大,表示优先级越高。**_ \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/8.\345\255\227\347\254\246\344\270\262\344\270\216\345\205\266\344\273\226\347\261\273\345\236\213\350\275\254\346\215\242.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/8.\345\255\227\347\254\246\344\270\262\344\270\216\345\205\266\344\273\226\347\261\273\345\236\213\350\275\254\346\215\242.md" new file mode 100644 index 0000000..cc17b83 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/8.\345\255\227\347\254\246\344\270\262\344\270\216\345\205\266\344\273\226\347\261\273\345\236\213\350\275\254\346\215\242.md" @@ -0,0 +1,36 @@ +### 1.整数 与 字符串 + + // 字符串与其他类型的转换 + // str 转 int + newStr1 := "1" + intValue, _ := strconv.Atoi(newStr1) + fmt.Printf("%T,%d\n", intValue, intValue) // int,1 + + // int 转 str + intValue2 := 1 + strValue := strconv.Itoa(intValue2) + fmt.Printf("%T, %s\n", strValue, strValue) + +### 2.浮点数 与字符串 + + // str 转 float + string3 := "3.1415926" + f,_ := strconv.ParseFloat(string3, 32) + fmt.Printf("%T, %f\n", f, f) // float64, 3.141593 + + //float 转 string + floatValue := 3.1415926 + //4个参数,1:要转换的浮点数 2. 格式标记(b、e、E、f、g、G) + //3. 精度 4. 指定浮点类型(32:float32、64:float64) + // 格式标记: + // ‘b’ (-ddddp±ddd,二进制指数) + // ‘e’ (-d.dddde±dd,十进制指数) + // ‘E’ (-d.ddddE±dd,十进制指数) + // ‘f’ (-ddd.dddd,没有指数) + // ‘g’ (‘e’:大指数,‘f’:其它情况) + // ‘G’ (‘E’:大指数,‘f’:其它情况) + + // 如果格式标记为 ‘e’,‘E’和’f’,则 prec 表示小数点后的数字位数 + // 如果格式标记为 ‘g’,‘G’,则 prec 表示总的数字位数(整数部分+小数部分) + formatFloat := strconv.FormatFloat(floatValue, 'f', 2, 64) + fmt.Printf("%T,%s",formatFloat,formatFloat) \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/9.map.md" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/9.map.md" new file mode 100644 index 0000000..4c53015 --- /dev/null +++ "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/9.map.md" @@ -0,0 +1,132 @@ +## 概述 +map 是一种无序的`键值对`的集合;通过 key 来快速检索数据,key 类似于索引, +指向数据的值; + +map 是引用类型,可以使用如下方式声明: + + //[keytype] 和 valuetype 之间允许有空格。 + var mapname map[keytype]valuetype + +在声明的时候不需要知道 map 的长度,因为 map 是可以动态增长的, +未初始化的 map 的值是 nil,使用函数 len() 可以获取 map 中 键值对的数目。 + +### 例: + package main + + import "fmt" + + func main() { + var mapLit map[string]int + var mapAssigned map[string]int + mapLit = map[string]int{"one": 1, "two": 2} + + mapAssigned = mapLit + //mapAssigned 是 mapList 的引用,对 mapAssigned 的修改也会影响到 mapList 的值。 + mapAssigned["two"] = 3 + + fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"]) + fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"]) + fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"]) + } + +另外一种构建方式: + + make(map[keytype]valuetype, cap) + + map2 := make(map[string]int, 100) + +## 1. 遍历map + +map 的遍历过程使用 for range 循环完成: + + scene := make(map[string]int) + scene["cat"] = 66 + scene["dog"] = 4 + scene["pig"] = 960 + for k, v := range scene { + fmt.Println(k, v) + } + +## 2. 删除 + +使用 delete() 内建函数从 map 中删除一组键值对,delete() 函数的格式: + + delete(map, 键) + + scene := make(map[string]int) + // 准备map数据 + scene["cat"] = 66 + scene["dog"] = 4 + scene["pig"] = 960 + delete(scene, "dog") + + for k, v := range scene { + fmt.Println(k, v) + } + +**Go语言中并没有为 map 提供任何清空所有元素的函数、方法,清空 map 的唯一办法就是重新 make 一个新的 map** + +## 3. 线程安全的map + +并发情况下读写 map 时会出现问题,代码如下: + + // 创建一个int到int的映射 + m := make(map[int]int) + // 开启一段并发代码 + go func() { + // 不停地对map进行写入 + for { + m[1] = 1 + } + }() + // 开启一段并发代码 + go func() { + // 不停地对map进行读取 + for { + _ = m[1] + } + }() + // 无限循环, 让并发程序在后台执行 + for { + } + +运行代码会报错:`fatal error: concurrent map read and map write` + +Go语言在 1.9 版本中提供了一种效率较高的并发安全的 `sync.Map`,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 sync 包下的特殊结构。 + +sync.Map 有以下特性: + +- 无须初始化,直接声明即可。 +- sync.Map 不能使用 map 的方式进行取值和设置等操作,而是使用 sync.Map 的方法进行调用,Store 表示存储,Load 表示获取,Delete 表示删除。 +- 使用 Range 配合一个回调函数进行遍历操作,通过回调函数返回内部遍历出来的值,Range 参数中回调函数的返回值在需要继续迭代遍历时,返回 true,终止迭代遍历时,返回 false。 + + + package main + + import ( + "fmt" + "sync" + ) + + func main() { + //sync.Map 不能使用 make 创建 + var scene sync.Map + + // 将键值对保存到sync.Map + //sync.Map 将键和值以 interface{} 类型进行保存。 + scene.Store("greece", 97) + scene.Store("london", 100) + scene.Store("egypt", 200) + + // 从sync.Map中根据键取值 + fmt.Println(scene.Load("london")) + // 根据键删除对应的键值对 + scene.Delete("london") + + // 遍历所有sync.Map中的键值对 + //遍历需要提供一个匿名函数,参数为 k、v,类型为 interface{},每次 Range() 在遍历一个元素时,都会调用这个匿名函数把结果返回。 + scene.Range(func(k, v interface{}) bool { + fmt.Println("iterate:", k, v) + return true + }) + } \ No newline at end of file diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPATH.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPATH.png" new file mode 100644 index 0000000000000000000000000000000000000000..8f34e1a4f4bba1b0237ce52f4a8abc653b7aab3e GIT binary patch literal 1978 zcmbW%`#%%<9|!QyTw0M!m*YOVxzvuSg^){$RL8L#(gj;5Brzk+Wp0ZUIl`gv$XwD% zV=R^XFgk`|71?UmT!y(V%t6fM?E83p|AO<&`|*Cfe|Y`ye!Sn$l#4D-N(x#E005=) z=Nx_mKqf@m8*bkwt?5vFI{?so=N(SFN1{dFJnsmM_7Z=`{i5AxKjEiqQ@(KXO$z@W zV|&Jk7ibh5GTOR4UZ%MtbWhR2E*NHWef90e;#|DvP)E2oVsQLT5GS4R0jo5~5rqeJ z1$1Luv7RO?qHa9=?TpF2^87+35_HU~?#GGBi39vsW_&h=F3>%Ma02HikXI*AcNU$4_x3{5L)Cs$3#^pqA9T+TmmqH6K_R%eB5&OR=drV~KYnt-A3m z4wVx~l^q}qYWn8|MFgQptlNSsHja|9ID7$=Tb;%}R?$j0HQRyoDA0osiIBQ}}N3>=x!#7(GWTm$wu8 zy)cF;*1Pe~k$9okbjk-kS8@grcr>L(!*7fhJQ``KLO~{$@m|N9yw_4$%hy}{yYn)s zgw}hz);ez3`j47u&Sb5S39B>09mbtVcV6+2_4?wU!=aW2V%cK7KpBARNV)$Vb=H2OEC9JXrJ;cC zyM0(XGB^XE036knu>gSBrAmhY;QRn6(@ob}Tz7z$_ll7Gg>t}8XxK9SmBd~nwTexO z)7RThx!C3BxW+lx28Z|hXjiP?i&$V(7NA38rbWUNd+A;H(yFI`PAO0r7R#TlDEz&Z zV$RS@Vz;Hr&bI0P+psG*XzX)mZ%+A%!eKN&SFsjxfUuQ=Qj6^nu9b_3Q; zYhs|>nLq23b$?U6{Bzqx(v0*&(62Sb%gZ@hcwO?rRNLl1Emf=~KWaOc^QvVnCX9(g zK1YeEs3wLQWAng~L_U{qcXZm`$(3D(FYNnXEvC=w2P7_ z6}<$7$zb?#n9*@zSU2^FTLF@~eo#=Q_fK!}_^T4iLn}nf`A)sSCRNPgOd;y&{uNnz zDnq6&v()=*XBH%rK?}LMnoRh6AH`J-qGND_m6*75xW=@3N#n6kV*%CjBRL^^@7Se9 ztKO>OD(b{#<(o|G6kMhLk5**w+Jq=zFyv&?!C$}TSbjY6SW;J625Z=I#C%(<_rMOs zjuiR;jT35ga?-6Kqs?Py8ZvSN@bL%4}c z+1$p}3>2m5F2g!3Mcg0b$uvwHNc$3*cdWAyZy{p=kGxP8XDVZ9g1ZX+OCi@U{=$I} z8*}XwFTs356{vhW>8^+|6tM_09HjzE5u#-@MD1HJ5bAL1K7zUDIN!A~czcXni40UT zq;9Haf|mJtPn9G-NA!yOk3$~2{7c93U$KIxIw-D#CynL@8+}ReF5_618lR4PE{x#` z!1a$;0B6Uo>FcjZ<{7R1ACutULZkJKzajEr+dlnK90GWwk6I zoA%8_j^-4Gq&b`$C`ZM|mN8A)kA=bR(bDj_ozM`cB40TN!s*WuO|A{e$w~FmBh%k{ zwNkNR5(9Ogly-Ft)kbAq`==dK?Kely^Id8jeV?<)pA0}``yxb#sOKba{%8+< z!yX;79UPaE!8#>f7kS0(KIXnu22CjvhI`P115_o^T*0P?R2CKyC|m4bh1GG;r0KaV z(nzD%|EK?fo*(H;Jl-YL#6%ognt21 Cgw=-t literal 0 HcmV?d00001 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPROXY.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/GOPROXY.png" new file mode 100644 index 0000000000000000000000000000000000000000..772d76b8bb49b060897378a7dd1ca6b4950b3630 GIT binary patch literal 1976 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 literal 0 HcmV?d00001 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod.png" new file mode 100644 index 0000000000000000000000000000000000000000..68c353e48611658d49be8b3a31198edf576c78b6 GIT binary patch literal 8011 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 IUAK?;FOiO-i~s-t literal 0 HcmV?d00001 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod_2.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/mod_2.png" new file mode 100644 index 0000000000000000000000000000000000000000..fa6bac11fd6278e64bcaad4fac403d1313006220 GIT binary patch literal 9888 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 QFV6smC==v+UE8q#0ii|bH2?qr literal 0 HcmV?d00001 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\345\205\263\351\224\256\345\255\227.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\345\205\263\351\224\256\345\255\227.png" new file mode 100644 index 0000000000000000000000000000000000000000..947a85bbc4197a4eb01b1618eddc230c241ab658 GIT binary patch literal 19297 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

xRO` zLoC7=S<)hkvH-+?)QPTO@2}`rEzB2Sk*}T!3B4kod#>w;EsyC)mYYbqz^22L$DyX0 zy`R{V_iRk8Ebfuo5<&y|DeVF=1hVMqO?`pJw_kF+sk9jn*^ke1QlsP>dqU5w#KJz} z)4ALAU{kB@ccOD-{0&{Io81#&GM>89WRo6{3|IL#l}Y?cvk(+jv%N%Pc|k)j#Y!+( z?et98$tLLlOyKxN7p}UJv&M0RJ8xoNCi3NN98QH?zJ-4(#4}xjIk(GvCpG+5BN^3k zPV-k6lA#Z$H9E3D5ASeJv7QH+!)66@>%Y=ta9)}&k;hNWk}0oW-^?+%?Pcwpl*^1X zmA^9`kj3H!dWdS%_Xz@v&CFj5TFo!?ebw^#YwO->3Fw&%jmGo={^wRqId9oz6(|os zicYXeZDsLg9EpWX>!ccndedf#T;CrgtW-ogwHD2A!n!bcO8l=Ho57e_4!dMnLjP+J zF1R+u-N|{*9K3(oYLgu&$3ITq9?qgyO5&yBM^{m}TkW-r2k&@ysjEDwjkHkIvr!$3 zJkGU}d|c94mV$hE<*+pIZrIxEkmQ`YnPNolbZ+4F_Ltqt28X53);wW4e!k3AoBPp= zJ@RsIfvmQH4FioFE^JH0-S1EByPa^E>GXWu&Qe)P1hU{gRl~b*FleNybn3JADN394 zM6ElF{-Y4PU^t|_iCB0ECjw6U54JdlAM;()L5=R$E&3W|`PEEOm2$uIUS%L@)zDw4 zjRL7kfZ)y*a7VwU`;pDr1ts->r5w3Slt4Gsz7vBJmQgGMDGO$Qko6nz%kLRaZT3ZG zLTYo|`G_7(3vVnxj5B`jUD8(7s_`$_Ju!7MTu-%5t7X94a4%HmTwT)c4PLzkVE!v3 zGoAM5zsI{@*LnB0nyGs$(w#5gvuUBr35e7M$0+J@-rRNMM3!h`6Iu(EG|$l{pt3yx zpA7=^wU8a$-WSbQt083eCxyv~J+#;;E{a=fBuPSnxb1iI$@G-nLS*KpXuWr_$=8kp zE{b00%gpM$LauDx+<|7tdfX?pvQ90O<8BP}3vE=)dp@k>zM^8>0cK^td+)o?!_Z3zT>8<6F- zaT~{JmD;$0XjisbM@!}6F|Wbc#*RP<+_B@!Gby;o6UiT=GRdt#B{0~uV~7qIzG{`) zX?tlAQ`0CAl_i6<^uI-}Cq23c_1LHJR?HJNN8vk-@57vJDmV$Eb32U`^0Bz}|p%Yve*#lZYp5i_n=5j zZvri9^g?-gO0=AF`>N8q)Kr4EmSvL~h193;2 zp#7cg_&k%a=K_|z6Pn&}u!{k02ZM8(-Tlc?pe$G6HR8Oq`M$EYj_=Bj{ z%T0rg+T+%*;V^Jz-aIF*xroE1qH8M3x;Im<@b47?##PfZAB*Q0VBJJDc0UZRe!l&D#ib-p(8v?qxUoUjdy?|8Zaamw$WC|1H_rtNfoYV9Mi3YO8R`c=AuTe<=WperxFeso%Zy e|L_e_Ot|>?PWPoRLACqWYM^g&z51%{i~k0UZ%}Xm literal 0 HcmV?d00001 diff --git "a/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\346\211\247\350\241\214.png" "b/go_base/\345\237\272\347\241\200\350\257\255\346\263\225/notes/\346\211\247\350\241\214.png" new file mode 100644 index 0000000000000000000000000000000000000000..53dc3475d1ae2267d0eff45394cc84c6f39d32da GIT binary patch literal 3808 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

S}All$8$mw-D1@r~^(iidt&`6|)9ekA^ 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�*_f1xena! zD9*2>X{pi?Wg%l zqJ_^`IME)oR|K@nTSMqp-z3Zh1FOG}TzS2x%0I@hqh{$vR;KLEE~nB(d0k3UA7aD1 z<%4pkTBjdcWRbws&kks|@W`jZ2V#KCHK`Yc!{g7=CE68#+K;EGXa3{vg7Zw@Ks4L( vU&jf)0$}QY_N0FM%l~C2;s5&&(dgdMrH!2Yq1F2HrMT@o@_Xr?v)BF)M!7=q literal 0 HcmV?d00001 -- Gitee