fengchun_yuan 2 years ago
parent
commit
e83be8c828
2 changed files with 33 additions and 9 deletions
  1. 24 9
      Go语言101/hello.go
  2. 9 0
      Go语言101/system.md

+ 24 - 9
Go语言101/hello.go

@@ -59,14 +59,29 @@ func main() {
 		// fmt.Printf("%d,%d", x, y)
 	}
 	{
-		//匿名函数
-		x, y := func() (int, int) {
-			print("hello")
-			return 3, 5
-		}()
-		func() {
-			println("hello")
-		}()
-		fmt.Printf("%d,%d", x, y)
+		// //匿名函数
+		// x, y := 1, 2
+		// a, b := func(x, y int) (int, int) {
+		// 	x = 4
+		// 	print(x + y)
+		// 	return x, y
+		// }(x, y)
+		// func() {
+		// 	println("hello")
+		// }()
+		// fmt.Printf("%d,%d", a, b)
+		// //在函数体后面跟上()表示声明后立即执行
+
+	}
+	{
+		x, y := "炸", "煎鱼"
+		fmt.Println(&x)
+		_, _ = func(x, y string) (s string, err error) {
+			x = "吃"
+			fmt.Println(&x)
+			return x + y, nil
+		}(x, y)
+		fmt.Println(&x)
+		fmt.Println(x, y)
 	}
 }

+ 9 - 0
Go语言101/system.md

@@ -190,7 +190,16 @@ Go指针值是支持(使用比较运算符==和!=)比较的。 但是,两
 
 ![image-20220829165612326](system.assets/image-20220829165612326.png)
 
+## 关于术语“引用类型”和“引用值”
 
+“引用”这个术语在Go社区中使用得有些混乱。很多Go程序员在Go编程中可能由此 产生了一些困惑。 一些文档或者网络文章,包括一些官方文档 (https://golang.google.cn/doc/faq#references),把“引用”(reference) 看作是“值”(value)的一个对立面。 《Go语言101》强烈不推荐这种定义。在这 一点上,本人不想争论什么。这里仅仅列出一些肯定错误地使用了“引用”这个术 语的例子:
+
+- 在Go中,只有切片、映射、通道和函数类型属于引用类型。 (如果我们确实 需要引用类型这个术语,那么我们不应把其它指针持有者类型排除在引用类型 之外。)
+- 一些函数调用的参数是通过引用来传递的。 (对不起,在Go中,所有的函数 调用的参数都是通过值复制直接值部的方式来传递的。)
+
+我并不是想说引用类型这个术语在Go中是完全没有价值的, 我只是想表达这个术语 是完全没有必要的,并且它常常在Go的使用中导致一些困惑。我推荐使用**指针持有者类型**来代替这个术语。 另外,我个人的观点是最好将引用这个词限定到只表示值 之间的关系,把它当作一个动词或者名词来使用,永远不要把它当作一个形容词来 使用。 这样将在使用Go的过程中避免很多困惑。
+
+# 数组、切片和映射