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,"\t")
	}
	fmt.Println()
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM