This commit is contained in:
Akagi201
2016-04-04 19:50:06 +08:00
parent c13813ab6b
commit 35b3e2ef68
4 changed files with 11 additions and 17 deletions

View File

@@ -32,9 +32,9 @@ q := new(int)
fmt.Println(p == q) // "false"
```
当然也可能有特殊情况如果两个类型都是空的也就是说类型的大小是0例如`struct{}``[0]int`, 有可能有相同的地址依赖具体的语言实现译注请谨慎使用大小为0的类型因为如果类型的大小位0好可能导致Go语言的自动垃圾回收器有不同的行为具体请查看`runtime.SetFinalizer`函数相关文档)。
当然也可能有特殊情况如果两个类型都是空的也就是说类型的大小是0例如`struct{}``[0]int`, 有可能有相同的地址依赖具体的语言实现译注请谨慎使用大小为0的类型因为如果类型的大小为0的可能导致Go语言的自动垃圾回收器有不同的行为具体请查看`runtime.SetFinalizer`函数相关文档)。
new函数使用常相对比较少,因为对结构体来说,可以直接用字面量语法创建新变量的方法会更灵活§4.4.1)。
new函数使用常相对比较少,因为对结构体来说直接用字面量语法创建新变量的方法会更灵活§4.4.1)。
由于new只是一个预定义的函数它并不是一个关键字因此我们可以将new名字重新定义为别的类型。例如下面的例子
@@ -43,4 +43,3 @@ func delta(old, new int) int { return new - old }
```
由于new被定义为int类型的变量名因此在delta函数内部是无法使用内置的new函数的。