数组
数组保存特定数量的元素,不能增长或收缩。要声明保存数组的变量,需要在方括号([])中指定它所保存的元素数量,后跟数组所保存的元素类型。
要设置数组元素的值或稍后检索值,你需要一种方法来指定你指的是哪个元素。数组中的元素从0开始编号。一个元素的编号称为其索引。
package main import ( "fmt" "reflect" ) func main() { var inas [10]int inas[9]=1 fmt.Println(reflect.TypeOf(inas)) fmt.Println(inas[1]) fmt.Println(inas[9]) }
初始化
与变量一样,当创建一个数组时,它所包含的所有值都初始化为该数组所保存类型的零值。所以默认情况下,一个int值数组用0填充:
然而,字符串的零值是一个空字符串,因此默认情况下,一个字符串值数组用空字符串填充:
创建数组时,它所包含的所有值都初始化为数组所保存类型的零值。
package main import "fmt" func main() { var ina [2]int fmt.Println(ina[1]) var sta [2]string fmt.Println(":",sta[1]) }
数组字面量
如果事先知道数组应该保存哪些值,可以使用数组字面量来初始化数组。数组字面量的开头与数组类型类似,其元素的数量将放在方括号中,后跟元素的类型。再后面跟着大括号,里面是每个元素应该具有的初始值列表。元素值应该用逗号分隔。
使用数组字面量初始化整个数组。
使用数组字面量也允许使用:=进行短变量声明。
package main import "fmt" func main() { var ina [9]int = [9]int{1,2,3} inb := [3]int{4,5} fmt.Print(ina[1],inb[1]) }
“fmt”包处理数组
当你只是想尝试调试代码时,不必逐个将数组元素传递给fmt包中的Println和其他函数。只需传递整个数组。fmt包中有为你做格式化和打印数组的逻辑。(fmt包还可以处理切片、映射和稍后将看到的其他数据结构。)
Printf和Sprintf函数使用的”%#v”动词,它将按照在Go代码中显示的方式格式化值。当用”%#v”格式化时,数组在结果中显示为Go数组字面量。
package main import "fmt" func main() { var ina [9]int = [9]int{1,2,3} fmt.Printf("%#v",ina) fmt.Printf("%v",ina) }
在循环里访问数组元素
使用for循环来处理数组元素之类的操作。循环遍历数组中的索引,并使用循环变量访问当前索引处的元素。
package main import "fmt" func main() { var ina [3]int = [3]int{1,2,3} for i:=0;i< len(ina);i++ { fmt.Println(ina[i]) } }
使用“for…range”安全遍历数组
处理数组中每个元素的一种更安全的方法是使用特殊的for…range循环。在range格式中,你提供了一个变量,该变量将保存每个元素的整数索引,另一个变量将保存元素本身的值,以及要循环的数组。循环将为数组中的每个元素运行一次,将元素的索引赋值给第一个变量,将元素的值赋值给第二个变量。你可以向循环块中添加代码来处理这些值。
package main func main() { var ina [3]int = [3]int{1,2,3} for i,v := range ina { print(i,v,"\n") } }
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!







