💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。 定义方式: ~~~ var variable_name [SIZE] variable_type ~~~ ## 一、基础用法 ~~~ package main import ( "fmt" ) func main() { var arr1 [5]int32 var arr2 [5]int32 = [5]int32{1, 2, 3, 4, 5} arr3 := [5]string{"a", "b", "c", "d", "e"} arr4 := [...]string{"h", "i", "j", "k", "l"} arr5 := [4][4]int32{{1}, {1, 2}, {1, 2, 3}} fmt.Println("arr1:", arr1) fmt.Println("arr2:", arr2) fmt.Println("arr3:", arr3) fmt.Println("arr4:", arr4) fmt.Println("arr5:", arr5) } ~~~ 结果: ~~~ arr1: [0 0 0 0 0] arr2: [1 2 3 4 5] arr3: [a b c d e] arr4: [h i j k l] arr5: [[1 0 0 0] [1 2 0 0] [1 2 3 0] [0 0 0 0]] ~~~ **注意:如果数组元素不够的话,会自动补0** 另外元素数量大于定义长度,则会报错 ~~~ arr6 := [5]string{"a", "b", "c", "d", "e", "f"} ~~~ 错误:array index 5 out of bounds [0:5] ## 二、len()获取数组长度 ~~~ fmt.Println(len(arr3)) // 5 ~~~ ## 三、cap()获取数组容量 ~~~ fmt.Println(cap(arr3)) // 5 ~~~ 由于go的内部处理机制(自动补0),使得**len和cap的结果是一样的**。 ## 四、循环数组 ~~~ for i, v := range arr3 { fmt.Println(i, v) } ~~~ 结果: ~~~ 0 a 1 b 2 c 3 d 4 e ~~~ ## 五、字节数组 []byte ``` package main import "fmt" func main() { b1 := []byte{1, 2, 3} fmt.Println(b1) b2 := []byte("hello") // 字符返回的的是ASCII码,JS:'h'.charCodeAt() 是104 fmt.Println(b2) } ``` 结果: ``` [1 2 3] [104 101 108 108 111] ``` ## 六、扩展操作符(...) ``` package main import "fmt" func foo(args ...string) { for _, v := range args { fmt.Println(v) } } func main() { var str = []string{ "hello", "world", "!", } foo(str...) } ```