分分钟制作一个h5页面,兰州网站搜索优化,wordpress 前台空白,怎样建一个可以支付的网站书接上回#xff0c;上回书说到#xff0c;循环语句#xff0c;在go中循环语句的少了whlie这个关键词#xff0c;但是与之for可以改这个改这个特点。并且在终止关键词中#xff0c;又有标签可以方便#xff0c;停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方…书接上回上回书说到循环语句在go中循环语句的少了whlie这个关键词但是与之for可以改这个改这个特点。并且在终止关键词中又有标签可以方便停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方法二方法三 数组遍历二维数组二维数组的遍历 数组是值类型 Array(数组)
数组是同一种数据类型元素的集合。
在Go语言中数组从声明时就确定使用时可以修改数组成员但是数组大小不可变化。有点类似与C语言 var 数组变量名 [元素数量] T 数组的长度必须是常量并且长度是数组类型的一部分。一旦定义长度不能变。
var a [3]int
var b [4]int
a b //不可以这样做因为此时a和b是不同的类型数组可以通过下标进行访问下标是从0开始最后一个元素下标是len-1访问越界下标在合法范围之外则触发访问越界会报错。
数组的初始化
方法一
初始化数组时可以使用初始化列表来设置数组元素的值。
func main() {var testArray [3]int //数组会初始化为int类型的零值var numArray [3]int{1, 2} //使用指定的初始值完成初始化var cityArray [3]string{北京, 上海, 深圳} //使用指定的初始值完成初始化fmt.Println(testArray) //[0 0 0]fmt.Println(numArray) //[1 2 0]fmt.Println(cityArray) //[北京 上海 深圳]
}方法二
按照上面的方法每次都要确保提供的初始值和数组长度一致一般情况下我们可以让编译器根据初始值的个数自行推断数组的长度。
var testArray [3]intvar numArray [...]int{1, 2}var cityArray [...]string{北京, 上海, 深圳}fmt.Println(testArray) //[0 0 0]fmt.Println(numArray) //[1 2]fmt.Printf(type of numArray:%T\n, numArray) //type of numArray:[2]intfmt.Println(cityArray) //[北京 上海 深圳]fmt.Printf(type of cityArray:%T\n, cityArray) //type of cityArray:[3]string
}方法三
我们还可以使用指定索引值的方式来初始化数组
a : [...]int{1: 1, 3: 5}fmt.Println(a) // [0 1 0 5]fmt.Printf(type of a:%T\n, a) //type of a:[4]int数组遍历
func main() {var a [...]string{北京, 上海, 深圳}// 方法1for循环遍历for i : 0; i len(a); i {fmt.Println(a[i])}// 方法2for range遍历for index, value : range a {fmt.Println(index, value)}
}二维数组
二维数组和C语言和java类似。用法和含义都差不多
func main() {a : [3][2]string{{北京, 上海},{广州, 深圳},{成都, 重庆},}fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]fmt.Println(a[2][1]) //支持索引取值:重庆
}二维数组的遍历
import fmtfunc main() {a : [3][2]string{{北京, 上海},{广州, 深圳},{成都, 重庆},}fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]fmt.Println(a[2][1]) //支持索引取值:重庆for _, v1 : range a {for _, v2 : range v1 {fmt.Printf(%s\t, v2)}fmt.Println()}
}多维数组只有第一层可以使用…来让编译器推导数组长度。
数组是值类型
什么是值类型其实对比java就可以明白Java中的数组是引用类型在方法中传参对数数组的元素进行修改会数组原有的数据发生改变但是Go中不存在这个方式。Go中进行传入的是值类型诺是函数想对数组元素进行改变就必须通过指针。此处不说等待下回分解。
func modifyArray(x [3]int) {x[0] 100
}func modifyArray2(x [3][2]int) {x[2][0] 100
}
func main() {a : [3]int{10, 20, 30}modifyArray(a) //在modify中修改的是a的副本xfmt.Println(a) //[10 20 30]b : [3][2]int{{1, 1},{1, 1},{1, 1},}modifyArray2(b) //在modify中修改的是b的副本xfmt.Println(b) //[[1 1] [1 1] [1 1]]
}数组支持 ““、”!” 操作符因为内存总是被初始化过的。[n]*T表示指针数组 * [n]T表示数组指针 。