Golang slice和map的申明和初始化

1 前言

仅供记录使用。

2 代码

/**
 * @Author: FB
 * @Description: 
 * @File:  SliceMapInit.go
 * @Version: 1.0.0
 * @Date: 2019/7/5 14:39
 */

package main

import "fmt"

func main(){
	InitSlice()
	InitMap()
}

func InitSlice(){
	//三个等价
	var a []int
	var a1 = []int{}
	var b = make([]int,0)
	var b2 = make([]int,0,0)

	//报错
	//a[0] = 1
	//b[0] = 2
	showVals(a,a1,b,b2)
	showVals("---------end 1---------")
	//三个等价
	var c = []int{0,0,0}
	var d = make([]int,3)
	var d2 = make([]int,3,3)

	var d3 = make([]int,3,5)

	c[0] = 1
	d[0] = 2
	showVals(c,d,d2)
	showVals("---------end 2---------")

	//报错,因为长度只有3
	//d[3] = 3
	showVals(d,len(d),cap(d))

	//报错,因为长度只有3
	//d3[3] = 3
	showVals(d3,len(d3),cap(d3))
	showVals("---------end 3---------")

	//append 以上两种情况都可以
	a = append(a,1,2,3)
	b = append(b,1,2,3)
	d = append(d,1,2,3)
	d3 = append(d3,1,2,3)
	showVals("a",a,len(a),cap(a))
	showVals("b",b,len(b),cap(b))
	showVals("d",d,len(d),cap(d))
	showVals("d3",d3,len(d3),cap(d3))

}

func InitMap(){
	var a map[string]string
	showVals(a)
	// add these lines:
	/*
		myGreeting["Tim"] = "Good morning."
		myGreeting["Jenny"] = "Bonjour."
	*/
	// and you will get this:
	// panic: assignment to entry in nil map

	//OK
	var b = make(map[string]string)
	//等价写法shorthand_make
	//b := make(map[string]string)

	//init
	b["Tim"] = "Good morning."
	b["Jenny"] = "Bonjour."
	showVals(b)

	//OK
	c := map[string]string{}
	//init
	c["Tim"] = "Good morning."
	c["Jenny"] = "Bonjour."
	showVals(c)

	//init
	c1 := map[string]string{
		"Tim":   "Good morning!",
		"Jenny": "Bonjour!",
	}

	c1["FB"] = "Hi"
	c1["Jenny"] = "Hello"
	c1["Jenny2"] = "Hello2"

	showVals(c1,len(c1))
	delete(c1,"Jenny2")
	showVals(c1)

	//key := "FB2"
	key := "FB"
	if val, exists :=  c1[key];exists{
		showVals(val)
		delete(c1,key)
		showVals(c1)
	}else{
		showVals("no found",key)
	}

	//遍历
	for key, val := range c1 {
		fmt.Println(key, " - ", val)
	}

}

func showVals(vals ...interface{}){
	for _,v :=range vals{
		fmt.Print(v,"	")
	}
	fmt.Println()
}

  

原文地址:https://www.cnblogs.com/fanbi/p/11138537.html