golang slice 切片

lobo · · 1087 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

// 字典 // 1、引用类型 // 2、var val map[string]int 其中 val 初始化值为nil,可读取,但写操作会引起恐慌 // 3、val03, ok := val["n3"] 其中 ok是否存在key:n3;val03是其值,不存在则为默认值 // 4、字典并不是并发安全 // 切片 // 1: 占用资源很小,引用类型 // 2: slice[a:b] 包含a索引值,不包含b索引值,默认容量上界索引为被操作对象容量上界索引 // 3: slice[a:b:c] 包含a索引值,不包含b索引值,容量上界索引为c // 4: slice 只能向后扩展,不能向前扩展 // 5: slice append // (1)某次操作未超过该slice容量上界索引,此次改变会更新原数组; // (2)某次操作超过该slice容量上界索引则新的被操作对象数组会被新建,此次改变不会更新原数组 numArr := [10]uint{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} slice0 := numArr[3:9] // 容量上界索引为10 slice1 := numArr[3:6:8] // 容量上界索引为8 slice1 = append(slice1, 100) // 此次 未超过该slice容量上界索引 更新原数组, 不新建数组 slice1 = append(slice1, 100, 100) // 此次 超过该slice容量上界索引 不更新原数组, 新建数组 for i := 0; i < len(slice0); i++ { fmt.Println(i, slice0[i]) } fmt.Println("slice0 ==>", len(slice0), cap(slice0)) for i := 0; i < len(slice1); i++ { fmt.Println(i, slice1[i]) } fmt.Println("slice1 ==>", len(slice1), cap(slice1)) 运行结果: 0 3 1 4 2 5 3 100 4 7 5 8 slice0 ==> 6 7 0 3 1 4 2 5 3 100 4 100 5 100 slice1 ==> 6 10

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1087 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传