go的nil值/零值/空值
https://learnku.com/go/t/46647
package main
import "fmt"
type Tess struct {
s string
i int
}
func main() {
var s Tess //空值 等于 Tess{} { 0}
var ptr *Tess //指针 <nil>
var ss = Tess{} //空值 等于 var s Tess { 0}
var prr = new(Tess) //&{ 0}
var sss = Tess{ // {test 100}
s: "test",
i: 100,
}
var slic []int //nil 值 = [] // nil值
var slicc = make([]int,0) //空值 []
var slicccc= make([]int,5) //零值 [0 0 0 0 0]
fmt.Println(s,ss,sss,ptr,prr)
fmt.Println(slic,slicc,slicccc)
var m map[string]string //map[] //nil值
var mm = make(map[string]string)// map[] 空值
var mmm = map[string]string{"test":"test"} //map[test:test]
var mmmm = map[string]string{} //map[] 空值
fmt.Println(m,mm,mmm,mmmm)
var c chan string
fmt.Println(c) //<nil>
c = make(chan string,1)
fmt.Println("空值",c) //空值 0xc0000441e0
c <-"test"
cc:= <- c
fmt.Println(cc) //test
for i :=range cc{
fmt.Println(i)
// 0
// 1
// 2
// 3
}
var f func()
var ff = func() {
fmt.Println("OK")
}
fmt.Println(f) //nil
fmt.Println(ff) // 0xb3cae0
}
结果:
{ 0} { 0} {test 100} <nil> &{ 0}
[] [] [0 0 0 0 0]
map[] map[] map[test:test] map[]
<nil>
test
0
1
2
3
<nil>
0xfbcae0
默认值表
类型 | 默认值 |
---|---|
整数 | 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 的默认值为nil。 ** 这就是为什么 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:<nil>
接口
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>
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-03-29 Shell中 |和||,&和&&用法
2021-03-29 shell -r参数
2018-03-29 实战:使用SVN+apache搭建一个版本控制服务器