标签:code str test 类型 不能 highlight image class 本质
package main import ( "fmt" ) type Person struct { Name string } //函数 //对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然 func test01(p Person) { //只能传值 fmt.Println(p.Name) } func test02(p *Person) { //只能传指针 fmt.Println(p.Name) } //对于方法(如struct的方法), //接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以 func (p Person) test03() { p.Name = "jack" fmt.Println("test03() =", p.Name) //jack } func (p *Person) test04() { p.Name = "mary" fmt.Println("test03() =", p.Name) //mary } func main() { p := Person{"tom"} test01(p) test02(&p) p.test03() fmt.Println("main() p.name=", p.Name) //tom //陷阱 (&p).test03() // 从形式上是传入地址,但是本质仍然是值拷贝 fmt.Println("main() p.name=", p.Name) //tom,并没有别改变 (&p).test04() fmt.Println("main() p.name=", p.Name) //mary p.test04() // 等价 (&p).test04 , 从形式上是传入值类型,但是本质仍然是地址拷贝 }
标签:code str test 类型 不能 highlight image class 本质
原文地址:https://www.cnblogs.com/yzg-14/p/12231822.html