这些功能有什么区别?

以下功能有什么区别?


func DoSomething(a *A){

    b = a

}


func DoSomething(a A){

    b = &a

}


富国沪深
浏览 173回答 2
2回答

PIPIONE

第一个函数接收指向类型值的指针A。第二个接收类型 A 的值的副本。这是调用第一个函数的方式:a := A{...} DoSomething(&a)在这种情况下DoSomething,接收指向原始对象的指针并可以对其进行修改。这里调用第二个函数:a := A{...} DoSomething(a)在这种情况下DoSomething接收 的副本a,因此它不能修改原始对象(但如果原始对象包含指向其他结构的指针,它可以修改它们)

白板的微信

func DoSomething(a *A) { // a is a pointer to given argument of type A    b = a // b is a copy of a, which is also the same pointer    // this is useful to change the given object directly}func DoSomething(a A) { // a is a copy of the given object type A    b = &a // b is the pointer of a}请记住,指针是一个保存内存地址的变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go