Go_初始化是否为nil

package main

import (
	"fmt"
)

func main() {
	//基本数据类型(默认值)
	var a int
	fmt.Println(a) //0
	a = 100
	fmt.Println(a) //100

	//数组(零) 数组是数据结构
	var arr [5]int
	fmt.Println(arr) //[0 0 0 0 0]
	arr[0] = 1000
	fmt.Println(arr) //[1000 0 0 0 0]

	//切片(空) 切片是数据结构
	var slice []int
	fmt.Println(slice) //[]
	slice = []int{1, 2, 3, 4, 5}
	fmt.Println(slice) //[1 2 3 4 5]

	//map(nil map,无法直接使用)
	var map1 map[int]int
	fmt.Println(map1) //map[]
	//map1[10] = 100
	//fmt.Println(map1) //panic: assignment to entry in nil map
	map2 := make(map[int]int)
	fmt.Println(map2) //map[]
	map2[100] = 1000
	fmt.Println(map2)  //map[100:1000]
	i, ok := map2[100] //这个OK也可以不写
	fmt.Println(i, ok)

	//管道(nil)
	var c chan int
	fmt.Println(c) //<nil>
	c2 := make(chan int)
	fmt.Println(c2) //0xc000054060
	go func() { //不能写在写数据的下面,会发生deadlock
		for n := 0; n < 10; n++ {
			//i := <-c2
			//fmt.Println(i)
			v, ok := <-c2 //OK可以不写
			fmt.Println(v, ok)
		}
	}()
	for n := 0; n < 10; n++ {
		c2 <- n
	}

}

  

猜你喜欢

转载自www.cnblogs.com/yzg-14/p/12364950.html