Golang 中定义不同类型的变量,不是通过声明就是通过 make 或 new 。 未显式初始化时,内存将被赋予一个默认的初始化,该默认值便为该类型的零值。不同的类型有不同的零值。
类型 | 零值 |
---|---|
数值类型 | 0 |
布尔类型 | false |
字符串 | “”(空字符串) |
slice | nil |
map | nil |
指针 | nil |
函数 | nil |
接口 | nil |
信道 | nil |
示例代码:
package main
import (
"fmt"
)
type Student struct {
Sno int //整型(数值类型)
Name string //字符串
Gender bool //布尔类型
Age float32 //浮点型(数值类型)
}
type StudentPrint interface {
Print()
}
func main(){
stu := new(Student)
fmt.Printf("stu=%+v\n", stu)
var sliceStudent []Student //切片
var mapStudent map[int]Student //映射
var pStu *Student //指针
fmt.Printf("slice=%v map=%v pointer=%v\n", sliceStudent, mapStudent, pStu)
var ifVar StudentPrint //接口
var funcVar func(str *Student) //函数
var chVar chan Student //信道
fmt.Printf("interface=%v func=%v chan=%v\n", ifVar, funcVar, chVar)
}
运行结果:
stu=&{Sno:0 Name: Gender:false Age:0}
slice=[] map=map[] pointer=<nil>
interface=<nil> func=<nil> chan=<nil>
[1] Go编程语言规范.零值