Go 所有类型的默认零值(Zero Value)附带示例代码

Go

默认值表

类型 默认值
整数 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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://golangbyexample.com/go-default-z...

译文地址:https://learnku.com/go/t/46647

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!