其他分享
首页 > 其他分享> > go默认零值/空值

go默认零值/空值

作者:互联网

https://learnku.com/go/t/46647

 

默认值表

类型默认值
整数 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>

标签:Default,Print,fmt,空值,Println,func,go,main,零值
来源: https://www.cnblogs.com/cheyunhua/p/16071132.html