gpt4 book ai didi

go - 这两种声明方式之间的区别,一种是新声明,另一种是没有声明?

转载 作者:行者123 更新时间:2023-12-01 22:43:21 24 4
gpt4 key购买 nike

两者之间到底有什么区别?

wg1 := new(sync.WaitGroup) 


var wg2 sync.WaitGroup

为什么
foo(someString string, someChn chan string, wg *sync.WaitGroup)
适用于wg1,但不适用于wg2和
bar(someString string, someChn chan string, wg sync.WaitGroup)适用于wg2,但不适用于wg1?

最佳答案

new语法会初始化pointer,因此wg1的类型为*sync.WaitGroup而不是sync.WaitGroup。这与任何其他带指针的语言相同,尽管某些现代语言并不直接具有此概念。简而言之,它是存储对象的内存地址。

在Go中使用的一个示例是将某对象传递到函数中并对其进行更改,因为Go是按值传递。传递wg2并对其进行操作不会更改原始WaitGroup

关于go - 这两种声明方式之间的区别,一种是新声明,另一种是没有声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60945537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com