从现在开始,努力学习吧!本文《Golang 用 New() 返回结构体指针,而不是直接创建一个》主要讲解了等等相关知识点,我会在编程网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!
问题内容我正在阅读此存储库单元测试代码,并且 client
结构是以我以前从未见过的方式创建的。
type client struct {
// client stuff
}
// in client_test.go
// creating default client for testing
c := dc()
// in resty_test.go
func dc() *client {
defaultclient = new()
defaultclient.setlogger(ioutil.discard)
return defaultclient
}
我的问题是返回new()
的目的是什么?
下面的代码的行为是否与 new()
样式类似?为什么要选择其中之一而不是另一个?
func dc() *Client {
DefaultClient := Client{}
return &DefaultClient
}
解决方案
New()
函数是 Client
的构造函数:
https://github.com/go-resty/resty/blob/63ac6744519b3b3e976256d87d7b097c3a2c8dbc/default.go#L25
使用构造函数允许使用设置的默认值构造结构,而不是像执行 Client{}
那样对所有内部字段使用零值。例如,在本例中,最大主体大小设置为 math.MaxInt32
而不是 0。
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~