<6>Golang基础进阶——数组

Golang开发之数组

数组——固定大小的连续空间

概念

数组是一段固定长度的连续内存区域。在 Go 语言中,数组从声明时就确定,(使用时可以修改数组成员,但是数组大小不可变化)。

1. 声明数组

var 数组变量名 [元素数量]T
示例:

如果未补充的value会使用该类型默认值填充。

func main() {
var team [3]string

team[0] = "hammer"
team[1] = "sold"
team[2] = "mum"

fmt.Println(team) // [hammer sold mum]
}
声明并初始化数组:
func main() {
var team = [3]string{"hammer", "sold", "mum"}
fmt.Println(team)
}
数组大小交给编译器定义:
func main() {
var team = [...]string{"hammer", "sold", "mum"}
fmt.Println(team)
}

2. 遍历数组

func main() {
arr1 := [5]int{3: 100, 4: 300}
for i := 0; i < len(arr1); i++ {
fmt.Printf("a[%d]=%d ", i, arr1[i])
}

for i, _ := range arr1 {
fmt.Println(i)
}
}

二维数组

func main() {
var a [3][2]int
a[0][0] = 10
a[0][1] = 10
fmt.Println(a)

for i1, v1 := range a {
fmt.Println(i1)
for i2, v2 := range v1 {
fmt.Println(i2, v2)
}
}
}

数组拷贝和传参

func printArr(arr *[5]int) {
arr[0] = 10
}

func main() {
var arr [5]int
printArr(&arr)
fmt.Println(arr)

arr2 := [...]int{1, 2, 3, 4, 5}
printArr(&arr2)
fmt.Println(arr2)
}

数组练习

求数组所有元素之和

func sumArr(a [10]int) int {
var sum int = 0
for i := 0; i < len(a); i++ {
sum += a[i]
}
return sum
}

func main() {
rand.Seed(time.Now().Unix())
var b [10]int
for i := 0; i < len(b); i++ {
b[i] = rand.Intn(1000)
}
sum := sumArr(b)
fmt.Println(sum)

}

找出数组中和为给定值的两个元素的下标,例如数组[1,3,5,8,7],找出两个元素之和等于8的下标分别是(04)和(12

func myTest(a [5]int, target int) {
for i := 0; i < len(a); i++ {
other := target - i
for j := i + 1; j < len(a); i++ {
if a[j] == other {
fmt.Printf("(%d,%d)", i, j)
}
}
}
}

func main() {
b := [5]int{1, 3, 5, 8, 7}
myTest(b, 8)
}
加油,你们是最棒的!
原文地址:https://www.cnblogs.com/Wshile/p/12768285.html