golang之什么时候该用指针?

iamdev ·
其实只要是struct不管什么时候用指针都是没错的。 除了map slice不需要指针传递之外,基本数据类型复制的代价小, 其他的都用指针合适
#1
更多评论
@iamdev person1 := Person{} fmt.Println(person1) swap(&person, &person1) fmt.Println(person1) fmt.Println(person) } func swap(p, p1 *Person) { p, p1 = p1, p fmt.Println("person1:---", p1) fmt.Println("person:---", p) p1.age = 13 fmt.Println("person1:---", p1) fmt.Println("person1:---", p) } {0 {}} person1:--- &{12 小兰 {宝马}} person:--- &{0 {}} person1:--- &{13 小兰 {宝马}} person1:--- &{0 {}} {0 {}} {13 小兰 {宝马}} swap方法里面变量改变了,回去为什么没了,p的值发生改变了?
#2
` person1 := Person{} fmt.Println(person1) swap(&person, &person1) fmt.Println(person1) fmt.Println(person) } func swap(p, p1 *Person) { p, p1 = p1, p fmt.Println("person1:---", p1) fmt.Println("person:---", p) p1.age = 13 fmt.Println("person1:---", p1) fmt.Println("person1:---", p) } {0 {}} person1:--- &{12 小兰 {宝马}} person:--- &{0 {}} person1:--- &{13 小兰 {宝马}} person1:--- &{0 {}} {0 {}} {13 小兰 {宝马}} swap方法里面变量改变了,回去为什么没了,p的值发生改变了? `
#3