go - golang中的这些函数有什么区别?

标签 go

我是 Go 编程的新手,想知道它们之间有什么区别(如果有的话)

一个。

func DoSomething(a *A) {        
      b = a
}

b.

func DoSomething(a A) {     
    b = &a
}

最佳答案

如果你真的想问那些 b 的区别是什么,一个是指向作为参数传递给 DoSomething 的对象的指针,另一个是指向作为参数传递给 DoSomething 的对象副本的指针。

https://play.golang.org/p/ush0hDZsdE

type A struct {
    f string
}

func DoSomethingPtr(a *A) {
    b := a
    b.f = "hi"
}

func DoSomething(a A) {
    b := &a
    b.f = "hey"
}

func main() {
    x := A{"hello"}
    DoSomething(x)
    fmt.Println(x)
    DoSomethingPtr(&x)
    fmt.Println(x)
}

关于go - golang中的这些函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803784/

相关文章:

go - 如何在golang dlv中重新加载源文件

URL 转义生成 "%A(MISSING)"而不是 "%3A"

pointers - 传递结构和结构指针有什么区别,它们不是都是指针吗?

go - 传递接口(interface)指针和赋值

struct - 在 Golang 中返回接口(interface)

windows - 使用 golang 在 Windows 中获取终端宽度

go - 在 Go 代码中,如何在超时时终止进程及其子进程?

testing - 如何在 Golang 中测试 map 的等价性?

go - A类满足B类要求

go - 为什么数组的&(地址)在go中打印 "&"