package main
import "fmt"
/*
数组是一个重要构建,定义数组并制定长度和数据类型 arr [10]int,数组一般存储使用数字做索引的数据
数组的固定以后不可以任意追加,数组声明的时候必须制定长度,或者 用 arr:=[]string{"z","d","c"}
数组索引从0开始,且索引只能是数字
*/
/*
切片:就是可以任意删减的数组
切片是底层数组中的一个连续片段,注意连续的意思就是切片不能"跳跃赋值",切片比数组灵活,数组不能任意添加元素
切片可以新增,删除,复制切片中元素,可将切片视为轻量级的数组包装器
切片申明 :make 关键字 make( []string,2) ,切片可以通过append追加到尾部,只能通过下标访问值
var cc = make([]string,2) make创建一个切片,第一个参数是数据类型,第二个参数是长度,len(cc)查看切片长度
切片的索引也只能是数字类型的,且是连续的
添加:var c:=make([]string,2) ; cc = append(cc,"I","love","you","too")
删除就是截取 cc = cc[:2] 从0开始截取3个
cc = cc[1:] 从下标1截取到尾,包含下标1
cc = cc[1:2] 从下标1截取下标2,包含下标1至下标2之前的元素
切片复制: copy(cc1,cc2) ,把切片cc2的值复制给cc1
*/
/*
映射: 就是kv模式的键值对数组,可以通过key访问value,在其他语言中 映射被称为关联数组,字典或散列
申明:make(map[string]int)
golang是静态语言,因为有映射功能又像python动态语言,而不像C语言的方面之一
var play = make(map[string]string) 声明一个空映射
play['bto']='on'
play['fto']='off'
删除: delete(play,"bto")
*/
func main() {
//var arr [2]string
//var arr1 [10]int
//var arr2 []int
//var arr3 []string
//arr[0] = "hello"
//arr[1] = "world"
//fmt.Println(arr, arr1, arr2, arr3)
//buildSlice()
buildMap()
}
func buildSlice() {
var arr = make([]string, 2)
arr[0] = "hello"
arr[1] = "world" //这里的切面是连续的,不能直接给arr[10]赋值
arr = append(arr, "china") //append 给切片追加值
arr = append(arr, "china1")
arr = append(arr, "china2")
arr = append(arr, "china3", "china4", "china5")
arr = append(arr[:3]) // 删除切面,只获取切片的前3个元素
var tt = make([]string,1)
copy(tt,arr) //复制切片,且只复制到tt的长度
fmt.Println(arr,tt)
}
func buildMap(){
var tt = make(map[string]int)
tt["name"] = 10
tt["age"] = 21 //添加元素
//delete(tt,"age"); //删除元素
fmt.Println(tt,tt["name"])
}