1. 数组Array
- 数组:是同一种数据类型的固定长度的序列。
- 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。
- 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。
- 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1
for i := 0; i < len(a); i++ {
}
for index, v := range a {
} - 访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
- 数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。
7.支持 “==”、”!=” 操作符,因为内存总是被初始化过的。
8.指针数组 [n]T,数组指针 [n]T。
2.数组切片Slice
- 需要说明,slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案
- 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。
- 切片的长度可以改变,因此,切片是一个可变的数组。
- 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。
- cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。
- 切片的定义:var 变量名 []类型,比如 var str []string var arr []int。
- 如果 slice == nil,那么 len、cap 结果都等于 0。
代码块
package main
import (
"fmt"
)
// 全局变量
var arr = [...] int {0,1,2,3,4,5,6,7} // 不限定数组长度
var arr1 = [5] int {} // 限定数组长度为5
func main() {
// 数组切片
splice0 := arr[:] // 获得下标0到-1所有的值
fmt.Printf("打印值:%v\n", splice0)
splice1 := arr[5:] // 获得下标5到-1所有的值
fmt.Printf("打印值:%v\n", splice1)
splice2 := arr[3:5] // 获得下标3到4所有的值
fmt.Printf("打印值:%v\n", splice2)
splice3 := arr[:len(arr)-1] // 去掉数组最后一个值
fmt.Printf("打印值:%v\n", splice3)
splice4 := arr[len(arr)-2:] // 获得数组最后两个个值
fmt.Printf("打印值:%v\n", splice4)
// 打印数组限定数组
fmt.Printf("限定数组长度:%d", len(arr1))
}
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!