From 358d8f4e17281e3286ea7287f08c5c3143031e58 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Thu, 2 Feb 2023 11:59:26 +0800 Subject: [PATCH] doc: update golang.md (#282) --- docs/golang.md | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/docs/golang.md b/docs/golang.md index c6f2414..b454825 100644 --- a/docs/golang.md +++ b/docs/golang.md @@ -185,6 +185,7 @@ fmt.Println("2d: ", twoDimension) ### 指针(Pointers) + ```go func main () { b := *getPointer() @@ -199,21 +200,25 @@ func getPointer () (myPointer *int) { //不能直接进行操作,包括读写 var p *int *p = 123 // panic nil pointer +``` + --- + +```go //而用new返回的是有默认值的指针, 为数据类型的默认值 func main(){ - //有一块内存存放了10,它的地址由系统自动分配,别名是a - a := 10 - //内存存放的10变成了20 - a = 20 - var p *int - p = &a //或者直接写 p := &a - //上面的p是一个指针,通过 *p 的方式同样可以访问 变量a指向 的内存 - - /*当你动态申请内存的时候,指针的存在意义之一就被体现出来了*/ - ptr := new(int) - //申请了一块内存空间,没有办法指定别名,new()返回内存地址,用指针接收 - //此时并没有变量能直接指向这块内存,所以只能通过内存地址来访问 + //有一块内存存放了10,它的地址由系统自动分配,别名是a + a := 10 + //内存存放的10变成了20 + a = 20 + var p *int + p = &a //或者直接写 p := &a + //上面的p是一个指针,通过 *p 的方式同样可以访问 变量a指向 的内存 + + /*当你动态申请内存的时候,指针的存在意义之一就被体现出来了*/ + ptr := new(int) + //申请了一块内存空间,没有办法指定别名,new()返回内存地址,用指针接收 + //此时并没有变量能直接指向这块内存,所以只能通过内存地址来访问 } ``` @@ -243,15 +248,17 @@ const s string = "constant" const Phi = 1.618 const n = 500000000 const d = 3e20 / n +``` 常量声明可以使用 iota常量生成器 初始化,它用于 生成一组以相似规则初始化的常量,但是不用每行都 写一遍初始化表达式。 注意: - 1.在一个const声明语句中,在第一个声明的常量 - 所在的行,iota被置为0,然后在每一个有常量声明的行加一。 - 2.写在同一行的值是相同的 +1. 在一个const声明语句中,在第一个声明的常量所在的行,iota被置为0,然后在每一个有常量声明的行加一。 +2. 写在同一行的值是相同的 + +```go const ( a = iota b