golang之数组
1.数组:同一种数据类型的固定长度的序列。
2.数组定义:var a [len]int,例如:var a [5]int
3.长度是数组类型的一部分,因此,var a[5] int 和 var a[10]int 是不同的类型
4.数组可以通过下标进行访问,下标是从0开始,最后一个元素是len-1
for i:=0;i<len(a);i++{
}
5.访问越界,如果下标在数组合法范围之外,就会触发越界,panic异常
package main import "fmt" func main() { var a [10]int a[0] = 100 fmt.Println(a) for i := 0; i < len(a); i++ { fmt.Println(a[i]) } for index, val := range a { fmt.Printf("a[%d]==%d\n", index, val) } }
6.数组是值类型,因此改变副本的值,不会改变本身的值
package main import "fmt" func test2() { var a [10]int b := a b[0] = 100 fmt.Println(a) } //传递指针 func test3(arr *[5]int) { (*arr)[0] = 1000 } func main() { //test2() var a [5]int //传 地址,改变 值类型 test3(&a) fmt.Println(a) }
7.费波纳茨数列
package main import "fmt" //菲波那切数列,非递归方式实现,打印前50个数 func fab(n int){ var a[]uint64 a = make([]uint64,n) a[0]=1 a[1]=1 for i:=2;i<n;i++{ a[i]=a[i-1]+a[i-2] } for _,v:=range a{ fmt.Println(v) } } func main(){ fab(50) }
8.声明数组,遍历数组
package main import "fmt" //数组的初始化 func testArray() { var a [5]int = [5]int{1, 2, 3, 4, 5} var a1 = [5]int{1, 2, 3, 4, 5} var a2 = [...]int{38, 283, 48, 38, 348, 387, 484} var a3 = [...]int{1: 100, 3: 200} var a4 = [...]string{1: "hello", 3: "world"} fmt.Println(a) fmt.Println(a1) fmt.Println(a2) fmt.Println(a3) fmt.Println(a4) } //多维数组 func muchArray() { //两行五列的数组 var a [2][5]int = [...][5]int{{1, 2, 3, 4, 5}, {7, 8, 9, 11, 12}} for row,v:=range a{ for col,v1:=range v{ fmt.Printf("(%d,%d)=%d\n",row,col,v1) } } } func main() { //testArray() muchArray() }
努力成为一个开发者
个人站点:www.pythonav.cn