登录  /  注册
博主信息
博文 70
粉丝 4
评论 5
访问量 102165
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Go:数组声明/数组切片
JiaJieChen
原创
1347人浏览过

1. 数组Array

  1. 数组:是同一种数据类型的固定长度的序列。
  2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。
  3. 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。
  4. 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1
    for i := 0; i < len(a); i++ {
    }
    for index, v := range a {
    }
  5. 访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
  6. 数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。
    7.支持 “==”、”!=” 操作符,因为内存总是被初始化过的。
    8.指针数组 [n]T,数组指针 [n]T。

2.数组切片Slice

  • 需要说明,slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案
  1. 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。
  2. 切片的长度可以改变,因此,切片是一个可变的数组。
  3. 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。
  4. cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。
  5. 切片的定义:var 变量名 []类型,比如 var str []string var arr []int。
  6. 如果 slice == nil,那么 len、cap 结果都等于 0。

代码块

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. // 全局变量
  6. var arr = [...] int {0,1,2,3,4,5,6,7} // 不限定数组长度
  7. var arr1 = [5] int {} // 限定数组长度为5
  8. func main() {
  9. // 数组切片
  10. splice0 := arr[:] // 获得下标0到-1所有的值
  11. fmt.Printf("打印值:%v\n", splice0)
  12. splice1 := arr[5:] // 获得下标5到-1所有的值
  13. fmt.Printf("打印值:%v\n", splice1)
  14. splice2 := arr[3:5] // 获得下标3到4所有的值
  15. fmt.Printf("打印值:%v\n", splice2)
  16. splice3 := arr[:len(arr)-1] // 去掉数组最后一个值
  17. fmt.Printf("打印值:%v\n", splice3)
  18. splice4 := arr[len(arr)-2:] // 获得数组最后两个个值
  19. fmt.Printf("打印值:%v\n", splice4)
  20. // 打印数组限定数组
  21. fmt.Printf("限定数组长度:%d", len(arr1))
  22. }
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学