a := sStudent{Name:"11",Age:1}
var b sStudent
b = a
b.Name = "bb"
fmt.Printf("a is:%+v\n",a)
fmt.Printf("b is:%+v\n",b)
输出:
a is:{Name:11 Age:1 User:}
b is:{Name:bb Age:1 User:}
改成:
a := &sStudent{Name:"11",Age:1}
var b *sStudent
b = a
b.Name = "bb"
fmt.Printf("a is:%+v\n",a)
fmt.Printf("b is:%+v\n",b)
输出:
a is:{Name:bb Age:1 User:}
b is:{Name:bb Age:1 User:}
再改成
a := &sStudent{Name:"11",Age:1}
var b sStudent
b = *a
b.Name = "bb"
fmt.Printf("a is:%+v\n",a)
fmt.Printf("b is:%+v\n",b)
输出:
a is:&{Name:11 Age:1 User:}
b is:{Name:bb Age:1 User:}
说明golang是对象的浅拷贝,只有指针的时候当改变的时候会。跟c++一样,不像nodejs所有对象都是一个引用