Go 所有类型的默认零值(Zero Value)附带示例代码
默认值表
类型 | 默认值 |
---|---|
整数 | 0 |
浮动 | 0 |
复数 | 0个实部和0个虚部 |
字节 | 0 |
符文 | 0 |
字串 | “” |
布尔 | 错误 |
数组 | 每个数组的值都为其默认值 |
结构 | 每个字段均为默认值 |
地图 | 无 |
频道 | 无 |
界面 | 无 |
切片 | 无 |
指针无 | |
功能介绍无 |
例子:
让我们看一个例子。使用侧面的菜单进行导航。
整数
package main
import "fmt"
func main(){
var int
fmt.Print(“ int的默认零值:”)
fmt.Println(a)
var b uint
fmt.Print(“ uint的默认零值:”)
fmt.Println(b)
}
输出:
int的默认零值:0
uint的默认零值:0
Float
package main
import "fmt"
func main(){
var a float32
fmt.Print(“ float的默认零值:”)
fmt.Println(a)
}
输出:
浮点数的默认零值:0
复数
package main
import "fmt"
func main() {
var a complex64
fmt.Print("Default zero value of complex: ")
fmt.Println(a)
}
输出:
Default zero value of complex: (0+0i)
字节
package main
import "fmt"
func main() {
var a byte
fmt.Print("Default zero value of byte: ")
fmt.Println(a)
}
输出:
Default zero value of byte: 0
Rune
package main
import "fmt"
func main() {
var a rune
fmt.Print("Default zero value of rune: ")
fmt.Println(a)
}
输出:
Default zero value of rune: 0
字符串
package main
import "fmt"
func main() {
var a string
fmt.Print("Default zero value of string: ")
fmt.Println(a)
}
输出:
Default zero value of string: //An emtpy string. Hence nothing is printed
布尔
package main
import "fmt"
func main() {
var a bool
fmt.Print("Default zero value of bool: ")
fmt.Println(a)
}
输出:
Default zero value of bool: false
数组
数组的默认值是其值的默认值。例如,在下面的代码中,存在两个长度为bool的数组。当我们打印时输出为** [false false] **
package main
import "fmt"
func main() {
var a [2]bool
fmt.Print("Default Zero Value of an array: ")
fmt.Println(a)
}
输出:
Default Zero Value of a array: [false false]
结构体
** struct 的默认值是其字段的默认值。例如,在下面的代码中,有一个带有两个字段的struct示例。一个是int类型,另一个是bool类型。我们创建此结构的一个实例,并在打印时输出为 {0 false} **
package main
import "fmt"
func main() {
type sample struct {
a int
b bool
}
a := sample{}
fmt.Print("Default Zero Value of an struct: ")
fmt.Println(a)
}
输出:
Default Zero Value of a struct: {0 false}
Map
** map 的默认值为零。 **这就是为什么fmt.Println(a == nil)的输出为true的原因。将地图传递到** fmt.Println **时,它将尝试在地图中打印值。这就是为什么输出是map []的原因
package main
import "fmt"
func main() {
var a map[bool]bool
fmt.Println(a == nil)
fmt.Print("Printing map: ")
fmt.Println(a)
}
输出:
true
Printing map: map[]
频道
package main
import "fmt"
func main() {
var a chan int
fmt.Print("Default zero value of channel: ")
fmt.Println(a)
}
输出:
Default zero value of channel:
接口
package main
import "fmt"
func main() {
var a chan interface{}
fmt.Print("Default zero value of interface: ")
fmt.Println(a)
}
输出:
Default zero value of interface: < nil>
切片
切片的默认值为** nil。 这就是为什么fmt.Println(a == nil)的输出为true的原因。当将切片传递到** fmt.Println **时,它将尝试打印切片中的值。这就是为什么输出是[]
package main
import "fmt"
func main() {
var a []int
fmt.Println(a == nil)
fmt.Print("Printing slice: ")
fmt.Println(a)
}
输出:
true
Printing slice: []
函数
package main
import "fmt"
func main() {
var a func()
fmt.Print("Default Zero Value of a func: ")
fmt.Println(a)
}
输出:
Default Zero Value of a func: <nil>
指针
package main
import "fmt"
func main() {
var a *int
fmt.Print("Default Zero Value of a pointer: ")
fmt.Println(a)
}
输出:
Default Zero Value of a pointer: <nil>
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: