本文最后更新于200 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
go语言数组
定义:
数组是具有相同 唯一类型 的一组以编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以 [5] int 和 [10] int 是属于不同类型的。数组的编译时值初始化是按照数组顺序完成的。
声明数组:
var 数组名[数组大小]数据类型
var identifier [len]type
var arr [3]int
package main
import "fmt"
func main() { //定义一个数组
var arr [3]int = [5]int{1, 2, 3}
fmt.Println(arr)
}
内存状态:
数组地址:
package main
import "fmt"
func main() { //定义一个数组
var arr [3]int16 = [3]int16{1, 2, 3}
fmt.Println(arr)
fmt.Printf("arr的地址是%p\n", &arr)
fmt.Printf("arr[0]的地址是%p\n", &arr[0])
fmt.Printf("arr[1]的地址是%p\n", &arr[1])
fmt.Printf("arr[2]的地址是%p\n", &arr[2])
}
int16每个占2个字节
数组的遍历:
两种方法:
1.普通for循环
2.键值循环(键值循环) for range结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道,for range 语法上类似于其它语言中的 foreach 语句,一般形式为:
for key, val := range coll {
...
}
注意:
(1)coll就是你要的数组
(2)每次遍历得到的索引用key接收,每次遍历得到的索引位置上的值用val
(3)key、value的名字随便起名 k、v key、value
(4)key、value属于在这个循环中的局部变量
package main
import (
"fmt"
)
func main() {
var arr [5]int = [5]int{1, 2, 3, 4, 5}
fmt.Println(arr)
//for循环遍历
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
fmt.Println("----------------------------")
//for range 遍历
for i, j := range arr {
fmt.Printf("第%d个数的索引值是%d,对应的值为%d\n", i+1, i, j)
}
}
数组初始化的方式
package main
import "fmt"
func main() {
//第一种
var arr1 [5]int = [5]int{1, 2, 3, 4, 5}
fmt.Println(arr1)
//第二种
var arr2 = [5]int{1, 2, 3, 4, 5}
fmt.Println(arr2)
//第三种
var arr3 = [...]int{1, 2, 3, 6, 8}
fmt.Println(arr3)
//第四种
var arr4 = [...]int{1: 66, 2: 88, 3: 99, 4: 33, 0: 55}
fmt.Println(arr4)
}
二维数组
package main
import "fmt"
func main() {
var arr [2][3]int16
fmt.Println(arr)
}
内存:
内存地址:
package main
import "fmt"
func main() {
var arr [2][3]int16
fmt.Println(arr)
fmt.Printf("arr的地址是%p\n", &arr)
fmt.Printf("arr[0]的地址是%p\n", &arr[0])
fmt.Printf("arr[1]的地址是%p\n", &arr[0][0])
fmt.Printf("arr[0]的地址是%p\n", &arr[1])
fmt.Printf("arr[1]的地址是%p\n", &arr[1][0])
}
二维数组的遍历
package main
import (
"fmt"
)
func main() {
var arr [2][3]int = [2][3]int{{1, 4, 7}, {2, 5, 8}}
fmt.Println(arr)
//for循环遍历
for i := 0; i < len(arr); i++ {
for j := i + 1; j < len(arr); j++ {
fmt.Println(arr[i])
}
}
fmt.Println("----------------------------")
//for range 遍历
for i, j := range arr {
for l, m := range j {
fmt.Printf("arr[%v][%v]=%v\n", i, l, m)
}
fmt.Println()
}
}