概述 #
当一个变量使用 var
进行声明后并未进行初始化 (变量后面没有赋值符 =
) 操作,会默认分配一个零值 (zero value)。
不同类型对应的零值 #
类型 | 零值 |
---|---|
bool | false |
int | 0 |
float | 0 |
string | "" |
byte (uint8) | 0 |
pointer | nil |
func | nil |
interface | nil |
slice | nil |
channel | nil |
map | nil |
例子 #
bool 类型 #
package main
import "fmt"
func main() {
var b bool
fmt.Printf("b = %t\n", b)
}
// $ go run main.go
// 输出如下
/**
b = false
*/
byte 类型 #
package main
import "fmt"
func main() {
var b byte
fmt.Printf("b = %c\n", b)
}
// $ go run main.go
// 输出如下
/**
b =
*/
func 类型 #
package main
import "fmt"
func main() {
var f func()
fmt.Printf("f = %v\n", f)
}
// $ go run main.go
// 输出如下
/**
f = <nil>
*/
channel 类型 #
package main
import "fmt"
func main() {
var ch chan bool
fmt.Printf("ch = %v\n", ch)
}
// $ go run main.go
// 输出如下
/**
ch = <nil>
*/