Go_声明是否为nil

package main

import (
	"fmt"
)

func main() {

	//基本数据类型(默认值)
	//如果是java,报错,变量未初始化
	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[0] = 100 //runtime error: index out of range [0] with length 0
	fmt.Println(slice)
	slice = []int{1, 2, 3, 4, 5}
	fmt.Println(slice) //[1 2 3 4 5]

	//结构体(默认值)
	type Student struct{
		Name string
		Age int
	}
	var s Student
	fmt.Println("s-->", s) //s--> { 0}

	//map(nil)
	var map1 map[int]int
	fmt.Println(map1) //map[]
	//map1[10] = 100 //panic: assignment to entry in nil map
	//fmt.Println(map1)
	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
	}

}
package main

import "fmt"

func main() {

	// 不初始化为nil的

	// 引用类型,初始化才能使用
	// make用于给引用类型分配空间,slice map chan

	// 1. 空接口类型
	type a interface{}
	var i a        // 不知道是什么类型实现的空接口,所以是nil
	fmt.Println(i) // <nil>

	// 2. 指针
	var p *int     // 只分配了p的空间,并没有分配到存数据的地址,所以是nil
	fmt.Println(p) // <nil>

	// 3. slice // 有底层数组,长度为0
	var s []int
	fmt.Println(s)
	s = append(s, 10)
	fmt.Println(s) // [10]
	// 长度为0的数组
	var aa [0]int
	fmt.Println("-->", aa)
	fmt.Println(len(aa)) // 0
	fmt.Printf("%T\n", aa) // [0]int

	// 4. map
	var m map[int]int // map[int]int 引用类型,没有分配存数据的地址,所以是nil
	fmt.Println(m)    // map[]
	//m[10] = 100 // assignment to entry in nil map

	//5. chan
	var c chan int // chan int 引用类型,没有分配存数据的地址,所以是nil
	fmt.Println(c) // <nil>
}

 

posted @ 2020-02-26 02:00  1769987233  阅读(323)  评论(0)    收藏  举报