- 块语句
在Go中,用 { } 包围代码块就形成了块语句。块语句中的代码可以在同一作用域中执行,类似于其他语言中的作用域块。例如:
func main() {
x := 1
{
y := 2
fmt.Println(x, y) // 输出: 1 2
}
// fmt.Println(y) // 报错
}
在这个示例中,使用 { } 应用于内部代码块并将其与外部分离。由于y的作用域仅限于代码块的范围内,因此在 { } 外部无法访问y。
- 初始化变量
可以使用 { } 初始化定义的变量,此时会自动根据元素个数为每个变量分配空间。例如:
func main() {
a, b := []int{1, 2}, []string{"hello", "world"}
fmt.Println(a, b)
}
这里使用 { } 初始化变量a和b,分别为整数切片和字符串切片。需要注意的是,a和b的长度必须与 { } 中元素的数量匹配。
- 多个返回值
在Go中,函数可以返回多个值。当函数 returning 时使用 { } 可以同时返回多个值。例如:
func returnTwo() (int, string) {
return 1, "hello"
}
func main() {
x, y := returnTwo()
fmt.Println(x, y) // 输出: 1 hello
}
在该示例中,returnTwo()函数返回2个值,并且使用 { } 在main()函数中同时接收这两个值。
- 初始化结构体
结构体是Go中的一种复合数据类型,可以使用 { } 来初始化结构体。例如:
type person struct {
name string
age int
}
func main() {
p := person{
name: "Tom",
age: 18,
}
fmt.Println(p) // 输出: {Tom 18}
}
在这个示例中,使用 { } 来初始化一个person类型的结构体,并且初始化了该结构体的两个字段。需要注意的是,字段必须在声明时初始化,否则编译器会报错。
- switch 代码块
在Go中,switch语句支持 { } 语句块来扩展分支。例如:
func main() {
switch n := 2; n {
case 1:
fmt.Println("Case 1")
case 2:
{
fmt.Println("Case 2 start")
fmt.Println("Case 2 end")
}
default:
fmt.Println("Default")
}
}
在该示例中,我们可以看到Case2使用{ }语句块来扩展多个语句。通常,这样的逻辑更加清晰。
总之,{ } 在Go中广泛应用,可以用于初始化变量,创建块语句,创建代码块并返回多个值,初始化结构体和扩展switch语句等。