type Request struct {
...
}
r1 := new(Request)
r2 := &Request{}
r1 和 r2 有什么区别吗?
我是看到标准库中 net/http/request.go
func (r *Request) WithContext(ctx context.Context) *Request
的实现用到了new
, 看了很多网上的资料都找不到为什么要用new.
type Request struct {
...
}
r1 := new(Request)
r2 := &Request{}
r1 和 r2 有什么区别吗?
我是看到标准库中 net/http/request.go
func (r *Request) WithContext(ctx context.Context) *Request
的实现用到了new
, 看了很多网上的资料都找不到为什么要用new.
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答876 阅读✓ 已解决
2 回答2.2k 阅读
这个看了一下effective go,地址在这里。
https://golang.google.cn/doc/...
new
并不会初始化对象,而是零值填充(zeroed)。这个用map来验证是比较合适的。
看到new的map是一个
nil map
,而另一种是返回初始化之后的对象了。