企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
数组 array 1、定义 var 变量名 [len]type 2、举例: var a[5]int var a[5]string var a[5]float32 var a[15]bool 3、如何访问数组中的元素 使用下标访问:a[0]就是第一个元素,长度为5的数组访问如下:a[0],a[1],a[2],a[3],a[4] 4、数组的内存布局: 连续的 &a[0] 取元素的内存地址 ~~~ package main import( "fmt" ) func main(){ var a[10]int for i := 0;i<len(a);i++ { fmt.Printf("%v\n", &a[i]) } } ~~~ 5、数组长度 var a[10]int lengrh := len(a) 6、何为越界 var a[10]int 当访问第十个元素时就会越界,程序会退出 7、数组遍历 a、下标遍历 b、for。。。。。range ~~~ var a[10]int for index,_ := range a{ fmt.Printf("%v\n", index) } ~~~ 8、值类型 ~~~ func main(){ a := 100 b := a b =200 fmt.Println(a,b) var c[5]int = [5]int{1,2,3,4,5} var d[5]int d = c d[0] = 200 fmt.Printf("d:%v\n",d) fmt.Printf("c:%v\n",c) } ~~~ 9、初始化 var c[5]int = [5]int{1,2,3,4,5} 当不确定元素个数时: var c = [...]int{1,2,3,4,5} 定义特定的元素值: var d = [5]string{1:'aaa',2:'ddd',4:'vvv'} ~~~ func Test2() { var z = [...]string{1:"aaa",2:"ddd",4:"vvv"} fmt.Printf("%#v\n",z) } ~~~ %#v #号是以go的格式显示元素 10、二维数组 var a[8][2]int 遍历 ~~~ func Test3() { var a[5][2]int for i :=0;i<5;i++ { for j:=0;j<2;j++ { a[i][j] = i*(j+1) fmt.Printf("%d \n",a[i][j]) } fmt.Println() } for i :=0;i<5;i++ { for j:=0;j<2;j++ { fmt.Printf("%d ",a[i][j]) } fmt.Println() } } ~~~ 练习: 1. 写一个程序,⽣生成100个随机数,并存放到数组中。最后,把数组打印到屏幕上。 ~~~ func genRand() { var a [100]int for i := 0; i < len(a); i++ { //赋值 a[i] = rand.Int() } for i := 0; i < len(a); i++ { //取下标=i的元素的值 fmt.Printf("%d\n", a[i]) } } ~~~ 2. 写一个程序,随机⽣生成100个字符串串,并存放到数组中。最后,输出到屏幕上。 ~~~ func genRandStr() { var a [100]string var b string = "0123456789我爱中国" //var runeArr = []rune(b) for i := 0; i < len(a); i++ { var str string for j := 0; j < 4; j++ { index := rand.Intn(len(b)) //格式化并返回格式化后的字符串 str = fmt.Sprintf("%s%c", str, b[index]) } a[i] = str fmt.Printf("a[%d]=%s\n", i, a[i]) } } ~~~