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的下标分别是(0,4)和(1,2)
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)
}