Go_初始化是否为nil

空扰寡人 提交于 2020-02-26 03:19:50
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
	}

}

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!