【发布时间】:2016-06-24 18:11:55
【问题描述】:
当我在玩闭包时,我偶然发现了这种行为。我无法绕开它。
此代码 sn-p 有效:
func main(){
var a string = "foo"
var b *string
var c string = "bar"
b = &c
fmt.Printf("%s %s\n", a, *b)
a = "hello"
*b = "world"
fmt.Printf("%s %s\n", a, *b)
}
而这不是:
func main(){
var a string = "foo"
var b *string
*b = "bar"
fmt.Printf("%s %s\n", a, *b)
a = "hello"
*b = "world"
fmt.Printf("%s %s\n", a, *b)
}
https://play.golang.org/p/NHw3X__Wtd
请比我聪明得多的人解释一下。
【问题讨论】:
-
该视频解释了 C 指针,但该课程也适用于学习。 youtube.com/watch?v=mnXkiAKbUPg
-
感谢您的视频。我知道它在 C 中是如何工作的,但我从来没有意识到它在 go 中是一样的。愚蠢的我。但是被引用对象的指针是新的。其实很合适。
标签: pointers go initialization