package main
import (
"fmt"
)
func main() {
// 数组
var num1 [3]int = [3]int{1, 2, 3}
fmt.Println(num1)
var num2 [3]int = [...]int{1, 2, 3}
fmt.Println(num2)
// 指定数组下标
var num3 [3]int = [...]int{2: 1, 0: 2, 1: 3}
fmt.Println(num3)
// 遍历数组
for index, value := range num3 {
fmt.Printf("index:%v\n", index)
fmt.Printf("value:%v\n", value)
}
// 数组
var intArray [5]int = [...]int{1, 2, 3, 4, 5}
// 切片引用intArray数组,从index=1(包含)开始,到index=3(不包含)结束
slice := intArray[1:3]
fmt.Println(intArray) // [1 2 3 4 5]
fmt.Println(slice) // [2 3]
fmt.Println("slice元素个数:", len(slice)) // 2
fmt.Println("slice容量:", cap(slice)) // 4 切片容量可动态变化
// 使用make创建切片
var slice1 []int = make([]int, 4, 20)
fmt.Println(slice1) // [0 0 0 0]
fmt.Println("slice1元素个数:", len(slice1)) // 4
fmt.Println("slice1容量:", cap(slice1)) // 20 切片容量可动态变化
// 定义切片直接指定数组,类似make
var slice2 []int = []int{5, 4, 20}
fmt.Println(slice2) // [5 4 20]
fmt.Println("slice2元素个数:", len(slice2)) // 3
fmt.Println("slice2容量:", cap(slice2)) // 3 切片容量可动态变化
// 切片初始化时不可越界,范围0-len(array)
// var slice = array[0: len(array)] 可简写为 var slice = array[:]
// var slice = array[0: end] 可简写为 var slice = array[:end]
// var slice = array[start: len(array)] 可简写为 var slice = array[start:]
var slice3 []int = make([]int, 4, 10)
for i := 0; i < 10; i++ {
slice3 = append(slice3, i)
}
fmt.Println(slice3) // [0 0 0 0 0 1 2 3 4 5 6 7 8 9]
fmt.Println("slice3元素个数:", len(slice3)) // 14
fmt.Println("slice3容量:", cap(slice3)) // 20 切片容量可动态变化
// 将slice3追加给slice3
slice3 = append(slice3, slice3...)
fmt.Println(slice3) // [0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 1 2 3 4 5 6 7 8 9]
// 切片拷贝
var slice4 = []int{1, 2, 3, 4, 5}
var slice5 = make([]int, 10)
copy(slice5, slice4)
// copy后 数据空间相互独立
fmt.Println("slice4:", slice4) // [1 2 3 4 5]
fmt.Println("slice5:", slice5) // [1 2 3 4 5 0 0 0 0 0]
// 字符串切片
str := "hello world"
strSlice := str[6:]
fmt.Println(strSlice) // world
strSlice = str[2:5]
fmt.Println(strSlice) // llo
strArray := []byte(str)
strArray[0] = 'a'
fmt.Println(string(strArray)) // aello world
strArray1 := []rune(str)
strArray1[0] = '中'
fmt.Println(string(strArray1)) // 中ello world
// 二维数组
var array1 [4][3]int
fmt.Println(array1) // 4行3列 初始值是0
for i := range array1 {
for j := range array1[i] {
fmt.Print(array1[i][j], " ")
}
fmt.Println()
}
}
Golang中数组和切片
于 2022-04-05 20:10:28 首次发布