我注意到两种风格初始化在Go代码示例结构类型的变量,但我不明白何时使用它们。
风格1:
package main
import (
"fmt"
)
type Msg struct {
value string
}
func NewMsg(value string) (Msg) {
return Msg{value}
}
func main() {
fmt.Println("Hello, playground")
var helloMsg Msg
helloMsg = NewMsg("oi")
fmt.Println("Hello, ", helloMsg.value)
}
款式二:
package main
import (
"fmt"
)
type Msg struct {
value string
}
func NewMsg(value string) (Msg) {
return Msg{value}
}
func main() {
fmt.Println("Hello, playground")
var helloMsg Msg
{
helloMsg = NewMsg("oi")
}
fmt.Println("Hello, ", helloMsg.value)
}
第一个样式是simples变量初始化,但第二个是比较模糊的我。什么花括号呢?我为什么要使用第二种形式?
编辑:
有关问题更多的上下文,它从转到套件库此示例代码出现了:qazxsw POI
什么花括号呢?
他们表示一个代码块。当你希望限制一个标识符(该块)的范围内可以使用的代码块。这是没有意义的,确实,因为你只能有一个标识,它从外部范围的。
一些阅读:
我看不出这两种风格之间的差异。他们是完全一样的。
Blocks in Go此定义范围代码,和在其内部声明的一些变量可以只在该范围内使用。但是,如果你外面声明{}
做helloMsg
的=
块内。 “helloMsg”没有范围的。
因此,这两种格式的风格是完全一样的。