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()
}

浙公网安备 33010602011771号