新函数和未初始化变量有什么区别?两者的优点是什么?
s := new(string) // *string
var s *string // *string
var s string // string
Run Code Online (Sandbox Code Playgroud)
仅仅是为了代码简单吗?因为我觉得是一样的
s := new(string) /* same as */ var s *string = &emptyString
Run Code Online (Sandbox Code Playgroud)
这段代码:
var s *string
Run Code Online (Sandbox Code Playgroud)
只需将“s”声明为指向字符串的指针即可。在这种情况下,“s”是一个 nil 指针,这是 golang 中指针的默认值。
这段代码:
s := new(string)
Run Code Online (Sandbox Code Playgroud)
还将“s”声明为指向字符串的指针,但这次字符串被初始化。这意味着“s”是一个非nil指针,指向golang中string的默认值,一个空字符串。