初始化数组
//初始化数组
func main() {
var testArray = [3]int{1, 2, 3} //定义数组,元素数量为3,类型为int型,数组内容是1,2,3
var numArray = [...]string{"上海", "北京", "杭州", "青岛"} //定义一个不定长的数组.类型为string 内容...
fmt.Println(testArray)
fmt.Println(numArray)
//使用索引值的方式来初始化数组
a := [...]int{1, 2, 3} //给a 数组int类型 不定长度,数组赋值+定义.
fmt.Println(a)
//数组遍历
for i, v := range numArray { //数组的遍历,遍历返回两个值,1索引,2数组内容
fmt.Println(i, v)
}
}
其中包含初始化数组.和数组的遍历
多维数组
//多维数组的定义以及遍历
func main() {
a := [3][2]int{{1, 2}, {3, 4}, {5, 6}}
for i, v := range a {
for j, t := range v {
fmt.Println(j, t)
}
fmt.Println(i, v)
}
}
返回结果

多维数组定义注意事项
//多维数组
func main() {
a := [...][2]string{{"北京", "天津"}, {"上海", "广州"}, {"海南", "东北"}} //多维数组中只有第一层数组数量定义的时候可以使用[...],其余的不能用...进行定义数组中元素的数量
for _, i := range a {
fmt.Println(i)
}
}
数组是值传递类型,在修改数组的值的时候如果不进行重新赋值那么原来的数组是保持不变的
//数组是值传递类型
func modifyArray(x [3]int) {
x[0] = 100
}
func modifyArray2(x [3][2]int) {
x[2][0] = 100
}
func main() {
a := [3]int{1, 2, 3}
modifyArray(a)
fmt.Println(a)
b := [3][2]int{{1, 2}, {2, 3}, {3, 4}}
modifyArray2(b)
fmt.Println(b) //最终打印结果与定义结果相同,并没有因为modifyArray2的函数修改而导致原始数组的变动.
}
出入结果如下

练习题:
1.
//求数组[1,3,5,7,8]所有元素之和
//求数组[1,3,5,7,8]所有元素之和
func main() {
a1 := [...]int{1, 3, 5, 7, 8} //24
n1 := 0
for i := range a1 {
n1 += a1[i]
}
fmt.Println(n1)
}
结果:

找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
func main() {
a1 := [...]int{1, 3, 5, 7, 8}
for i := 0; i < len(a1); i++ { //遍历出第一个元素
for j := 1; j < len(a1); j++ { //遍历出第二个元素,
if j > i && a1[i]+a1[j] == 8 { //比较两者大小,以防出现位置替换重复下标的情况,求和
fmt.Println(i, j) //打印结果下标
}
}
}
}
结果如下


被折叠的 条评论
为什么被折叠?



