go语言切片slice使用细节和注意事项整理

go语言中切片slice的使用是最为频繁的,效率也是最高的, 今天就给大家说说我们在使用过程中会忽略的一些细节。

     先普及一下slice的核心基础知识, go语言中的切片是引用类型, 其底层数据的存储实际上是存储在一个数组 上(这个和他的数据类型 引用 是相关的 他底层就是引用的数组), 而数组的大小一旦定义其大小就是不可改变的,

    使用建议:建议大家在使用切片的时候,如果是知道大小,那就在make的时候指定大小,然后通过下标来使用,  如果不知道大小,希望通过append来动态扩容,那在定义的时候就不要使用make来初始化

使用之前先初始化和分配内存空间

slice := make([]string, 2) //定义cap容量为2的字符串切片

slice[0] = "hello"

slice[1] = "golang"

用append函数将slice当做动态数组使用


var x []interface{} // 定义个空接口切片,注意切片如果定义后如果是使用append函数动态增加元素,则不需要使用make初始化分配空间,因为append函数帮我们做了这个事情。
// 如果是定义后想直接通过下标访问切片,则必须使用make初始化后才能使用下标访问!!

//动态增加元素, append会自动帮我们初始化和分配内存空间
x = append(x, "Hello golang")

定义切片的3种方式:

1. 从已有的数组中使用中括号[]和指定截取索引的位置来截取切片;

2. 使用 var 定义切片,然后使用append函数动态扩容;

3. 直接使用make构建和初始化切片,然后通过下标使用  注意不能越界!!

切片使用细节注意事项

1. 如果切片是从已有的数组截取来的, 在切片里面改变数据或者原来数组值改变的时候, 原来的数组或者截取后的切片的值也会相应的改变,因为切片是引用的数组

2. 切片使用len获取数据条数, 使用cap获取容量

3 切片的拷贝 注意事项

切片使用copy 内置函数完成拷贝:func copy(dst, src []Type) int

dst 要拷贝到的目标切片, src 拷贝数据的来源切片

var s4 = []int{7, 8, 9}

var ss4 = make([]int, 2) // 注意这里的创建的切片长度, 需要大于等于要拷贝的src的长度 否则就只能拷贝这里的长度个元素

copy(ss4, s4)

fmt.Printf("ss2=%v\n", ss4) // ss2=[7 8] s4里面有3个元素,因为ss4长度为2 所以这里只拷贝了2个元素

相关推荐

  1. go语言切片slice使用细节注意事项整理

    2024-05-13 05:14:07       9 阅读
  2. 深度解析Go语言中的Slice切片

    2024-05-13 05:14:07       7 阅读
  3. go 基础概念-变量类型使用注意事项

    2024-05-13 05:14:07       15 阅读
  4. Go 基础丨切片 slice

    2024-05-13 05:14:07       8 阅读
  5. 【GoLang基础】函数体的注意事项细节讨论

    2024-05-13 05:14:07       13 阅读
  6. go 映射(Map)使用注意事项

    2024-05-13 05:14:07       10 阅读
  7. Go 源码之切片 Slice

    2024-05-13 05:14:07       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 05:14:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 05:14:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 05:14:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 05:14:07       18 阅读

热门阅读

  1. GO: json 处理

    2024-05-13 05:14:07       15 阅读
  2. 【GoLang基础】defer关键字有什么作用?

    2024-05-13 05:14:07       12 阅读
  3. 算法训练营day33

    2024-05-13 05:14:07       13 阅读
  4. C++:完美转发(一)(std::forward)

    2024-05-13 05:14:07       12 阅读
  5. Gone框架介绍15 - 使用traceId追踪日志

    2024-05-13 05:14:07       11 阅读
  6. Nginx使用详解

    2024-05-13 05:14:07       12 阅读
  7. Agent AI智能体:未来社会的角色、发展与挑战

    2024-05-13 05:14:07       11 阅读