【发布时间】:2017-07-02 16:06:07
【问题描述】:
例如
var myStructRef *Vertex
var myStruct Vertex
myStructRef = &Vertex{2, 3}
myStruct = Vertex{2, 3}
fmt.Println(myStructRef)
fmt.Println(myStruct)
changeByReferenceStruct(myStructRef)
changeByValueStruct(myStruct)
fmt.Println(myStructRef)
fmt.Println(myStruct)
还有
func changeByValueStruct(myStruct Vertex) {
myStruct.X = 5
fmt.Println(myStruct)
}
func changeByReferenceStruct(myStruct *Vertex) {
myStruct.X = 7
fmt.Println(myStruct)
}
myStructRef *Vertex 和 myStruct Vertex 不都是指向结构本身的指针吗?为什么我在函数中修改结构时会出现行为差异?
golang 解析参数时是否在changeByValueStruct 中创建新结构?
【问题讨论】:
-
结构体值是结构体值,不是指向结构体值的指针;指向结构值的指针是指针,而不是指向指针的指针。 Go 文档中的哪些内容给人以普通结构值是指针的印象?