5.go slice, 切片与数组, map
来源:互联网 发布:mac修容粉 编辑:程序博客网 时间:2024/06/05 22:42
package mainimport "fmt"func main() { //数组定义 var arr[5] int arr[0] = 1 arr[1] = 2 fmt.Println(arr) // 数组定义并初始化 var arr1 = [5]int {'a','b','c'} fmt.Println(arr1) //数组初始化 arr2 := [5]int {1,2,3,4,5} fmt.Println(arr2) //切片定义 var slice[] int fmt.Println(slice) //切片定义并初始化 var slice1[] int = make([]int, 3) fmt.Println(slice1) //切片初始化 slice2 := make([]int, 5) fmt.Println(slice2) slice3 := []int {1,2,4,5,6,7,8,9} fmt.Println(slice3)//声明一个 100 个的切片 slice := []int {99:100} fmt.Println(slice) //声明空切片 var slice1[] int fmt.Println(slice1)slice := []int {1,2,3,4,5} slice[1] = 100 fmt.Println(slice) newSlice := slice[1:3] //长度为2,容量为4 fmt.Println(newSlice) // printf 100 3}
长度与容量计算:
改变切片可能导致的结果:
package mainimport "fmt"func main() { slice := []int {1,2,3,4,5} slice[1] = 100 fmt.Println(slice) //[1 100 3 4 5] newSlice := slice[1:3] //长度为2,容量为4 fmt.Println(newSlice) // [100 3] newSlice[1] = 2000 fmt.Println(newSlice) //[100 2000] fmt.Println(slice) //[1 100 2000 4 5]}
append() 函数:
slice := []int {1,2,3,4,5} fmt.Println(slice) // [1 2 3 4 5] newSlice := slice[1:3] fmt.Println(newSlice) //[2 3] newSlice = append(newSlice, 60) fmt.Println(newSlice)//[2 3 60] fmt.Println(slice)//[1 2 3 60 5]
append() 同时增加长度和容量:
slice := []int {1,2,3,4,5} newSlice := append(slice, 50) fmt.Println(slice)//[1 2 3 4 5] fmt.Println(newSlice)//[1 2 3 4 5 50]
使用3个索引创建切片:
设置长度和容量一样大:
source := []string {"Apple", "Orange", "Plum", "Banana", "Grape"} fmt.Println(source) slice := source[2:3:4] fmt.Println(slice) slice = append(slice, "Hello,World") fmt.Println(source) fmt.Println(slice)
如果没有第三个索引,或者 容量大于长度。会改变底层数组。
限制容量跟长度一样后,第一次调用 append() 会创建新的底层数组
迭代切片:
slice := []int {1,2,3,4} for index, value := range slice { fmt.Printf("Index %d, Value %d\n",index,value) }
传统for :
slice := []int {1,2,3,4} for index := 2; index < len(slice); index++ { fmt.Printf("Index : %d, Value : %d\n",index,slice[index]) }
map :
// 初始化 colosr := map[string]string {} colosr["red"] = "#111" fmt.Println(colosr) //判断映射是否存在 var colosr1 map[string]string index,exists := colosr1["blue"] if exists { fmt.Println("yes") } else { fmt.Println(index) fmt.Println("no") }
delete() 函数 :
colors := map[string]string { "Alibaba":"#111", "Color":"#222", "Dark":"#333", "Fooo":"#444", } for index,value := range colors { fmt.Println(index) fmt.Println(value) } delete(colors,"Alibaba") // 删除切片 for index,value := range colors { fmt.Println(index) fmt.Println(value) }
映射作为函数参数,传递的是引用package mainimport "fmt"func main() { colors := map[string]string { "Alibaba":"#1111", "Bbbbb":"#2222", "Ccccc":"#3333", "Ddddd":"#4444", } for index,value := range colors { fmt.Println(index) fmt.Println(value) } removeColor(colors, "Alibaba") fmt.Println("----------------------") for index,value := range colors { fmt.Println(index) fmt.Println(value) }}func removeColor(colors map[string]string, key string) { delete(colors, key)}
https://segmentfault.com/a/1190000005812839?utm_source=tuicool&utm_medium=referral
http://www.jb51.net/article/56828.htm
阅读全文
0 0
- 5.go slice, 切片与数组, map
- Go数组与切片
- Go学习笔记-Go语言数组array和切片slice
- Go 语言切片(Slice)
- Go语言切片(Slice)
- Go语言 --- slice切片
- go的数组与slice
- golang 数组(array)与切片(slice)
- 第4课 Go数组Array和切片Slice
- Go语言基础入门--数组,切片,map
- Go语言4-数组、切片及map
- Go语言的数组,切片,set,map
- Go 语言切片(Slice)
- go map slice积累
- Go语言学习笔记之数组、数组切片和map
- golang语法总结(十五):数组array与切片slice
- Go语言 数组(Array), 分片(Slice), Map 以及 Set
- go array數組slice切片實例
- DP——51nod1486 大大走格子
- java 将已有的字符串保存到txt文件中
- 反向传播算法
- (转)解决机器学习问题有通法!看这一篇就够了!
- C++单个类的所有对象是否共享虚函数表的验证
- 5.go slice, 切片与数组, map
- 7-18 日期格式化(5 分)
- Tomcat热部署方法(3种)
- vc获取windows设备枚举设备信息
- lsof命令、pidof命令和pgrep命令
- yum下载rpm包以及相关依赖包
- 快速排序Java实现--最简单的实现方法
- ES04--ElasticSearch vs Solr 优缺点
- Retrofit自定义Converter,获取原始请求数据,实现自定义解析