go 数组和切片
所属分类 go
浏览量 504
切片 指针类型,数组 值类型
数组 长度固定 ,切片 是 动态数组
切片的底层是数组
package main
import (
"fmt"
"reflect"
)
func main() {
arr1 := [2]int{1, 2}
arr2 := [2]int{1, 2}
arr3 := [...]int{1, 2}
fmt.Println(reflect.TypeOf(arr1).Kind()) // array
fmt.Println(arr1 == arr2) // true
fmt.Println(arr1, arr2, arr3)
fmt.Println(len(arr1), cap(arr2)) // 2 2
slice1 := arr1[:]
slice2 := arr2[:]
fmt.Println(reflect.TypeOf(slice1).Kind()) // slice
fmt.Println(slice1, slice2)
fmt.Println(len(slice1), cap(slice2)) // 2 2
// 切片之间不能进行等值判断,只能和nil判断
// invalid operation: slice1 == slice2 (slice can only be compared to nil)
// fmt.Println(slice1 == slice2)
var slice3 []int // nil
slice4 := []int{} // empty , not nil
slice5 := []int{1, 2, 3}
fmt.Println(slice3 == nil) // true
fmt.Println(slice4 == nil) // false
slice3 = append(slice3, 1)
var slice6 = make([]int, 3)
fmt.Println(len(slice6), cap(slice6)) // 3 3
var slice7 = make([]int, 3, 5)
fmt.Println(len(slice7), cap(slice7)) // 3 5
fmt.Println(slice3, slice4, slice5, slice6, slice7)
for index := range slice7 {
fmt.Println(index)
}
for index, value := range slice7 {
fmt.Println(index, value)
}
}
https://gitee.com/dyyx/hellocode/blob/master/demo/go/arr-and-slice/main.go
上一篇
下一篇
余杭护国山
职场暗语
GO 快速教程
高庄宸迹
go make 用法
go new