總目錄:http://www.itdecent.cn/p/e406a9bc93a9
Golang - 子目錄:http://www.itdecent.cn/p/8b3e5b2b4497
數(shù)組
數(shù)組是同一種數(shù)據(jù)類型元素的集合。 在Go語言中,數(shù)組從聲明時就確定,使用時可以修改數(shù)組成員,但是數(shù)組大小不可變化。
定義數(shù)組
語法
var 變量名 [長度]數(shù)組元素類型
例子:
package main
import "fmt"
func main() {
//數(shù)組
//存放元素的容器
//必須指定存放的類型與容量
var arr1 [3]int
var arr2 [4]int
}
注意事項:
數(shù)組的類型與其長度相關(guān)聯(lián)。
package main
import "fmt"
func main() {
var arr1 [3]int
var arr2 [4]int
fmt.Printf("arr1:%T arr2:%T\n", arr1, arr2)
}
----------
arr1:[3]int arr2:[4]int
數(shù)組的初始化
數(shù)組的初始化有三種方式,第一種是在定義時直接指定,第二種是讓編譯器自動識別長度,第三種是指定索引初始化。
package main
import "fmt"
func main() {
var arr1 [3]int
var arr2 [4]int
// 數(shù)組初始化
// 如果不初始化,默認元素是0(布爾值是false,數(shù)值型是0,字符串是“)
fmt.Println(arr1, arr2)
// 初始化一
arr1 = [3]int{1,3}
fmt.Println(arr1)
// 初始化二 根據(jù)初始值自動推斷數(shù)組長度是多少
arr100 := [...]int{1, 2, 31, 4, 234, 34, 532, 45}
fmt.Println(arr100)
// 初始化三 根據(jù)索引初始化
arr4 := [5]int{0: 1, 4: 2}
fmt.Println(arr4)
}
----------
[0 0 0] [0 0 0 0]
[1 3 0]
[1 2 31 4 234 34 532 45]
[1 0 0 0 2]
遍歷數(shù)組
遍歷數(shù)組就要使用for循環(huán)了,但是因為遍歷的是復(fù)合數(shù)據(jù)類型,所以就有了兩種遍歷方式。
package main
import "fmt"
func main() {
// 數(shù)組的遍歷
citys := [...]string{"北京", "上海", "深圳"}
// 1.根據(jù)索引遍歷
for i := 0; i < len(citys); i++ {
fmt.Println(citys[i])
}
// 2.for range遍歷
for i, v := range citys {
fmt.Println(i, v)
}
}
----------
北京
上海
深圳
0 北京
1 上海
2 深圳
多維數(shù)組
Go語言是支持多維數(shù)組的,我們這里以二維數(shù)組為例.
多維數(shù)組的定義
package main
import "fmt"
func main() {
//多維數(shù)組
var arrs = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
fmt.Println(arrs)
}
----------
[[1 2 3] [4 5 6] [7 8 9]]
多維數(shù)組的遍歷
package main
import "fmt"
func main() {
//多維數(shù)組
var arrs = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
fmt.Println(arrs)
//多維數(shù)組的遍歷
for _, v1 := range arrs {
for _, v2 := range v1 {
fmt.Println(v2)
}
}
}
----------
[[1 2 3] [4 5 6] [7 8 9]]
1
2
3
4
5
6
7
8
9
數(shù)組是值類型
就是說引用了數(shù)組之后,拷貝數(shù)組與原數(shù)組之間沒有關(guān)系了。
package main
import "fmt"
func main() {
//數(shù)組是值類型
//這句話翻譯成Python語言就是 數(shù)組是 不可變數(shù)據(jù)類型
arr5 := [3]int{1,2,3}
arr6 := arr5
arr6[0] = 10
fmt.Println("arr5:",arr5)
fmt.Println("arr6:",arr6)
}
----------
arr5: [1 2 3]
arr6: [10 2 3]
練習(xí)題
package main
import "fmt"
func main() {
//數(shù)組練習(xí)題
//1.求數(shù)組[1,3,5,7,8]所有元素的和
//2.找出數(shù)組中和為指定值的兩個元素的下標(biāo)
//例如:和為8的兩個元素下標(biāo)分別為(0,3)和(1,2)
arrays := [...]int{1,3,5,7,8}
//1
sum := 0
for _,v := range arrays{
sum = sum + v
}
fmt.Println(sum)
//2
for i := 0;i<len(arrays);i++{
for j:=i+1;j<len(arrays);j++{
if arrays[i] + arrays[j] == 8{
fmt.Printf("(%d,%d)\n",arrays[i],arrays[j])
}
}
}
}