三、数组和for循环
一维数组可以这样声明:var arrNumbers[5] int
或者用:=这样声明:
arrNumbers :=[5] float64{3.3, 4.5, 6.2, 6.3, 9.8}
for 循环的标准形式和c或者java略有不同,少掉了括号(), for循环也可以嵌套。示范程序如下:
package main
import "fmt"
func main(){
for i:=1; i<=5; i++ {
fmt.Println(i)
}
var arrNumbers[5] int
arrValues := [5]float64{3.4, 5.4, 6.7, 8.9, 10.2}
for i:=0; i<5; i++ {
arrNumbers[i]=i*3-2
fmt.Println(arrNumbers[i]," ",arrValues[i])
}
var twoDArr[3][3] int
for i:=0;i<3;i++{
for j:=0;j<3;j++{
twoDArr[i][j]=i*10+j
}
}
fmt.Println(twoDArr)
}
执行结果如下
1
2
3
4
5
-2 3.4
1 5.4
4 6.7
7 8.9
10 10.2
[[0 1 2] [10 11 12] [20 21 22]]
可以看到Println可以直接打印二维数组。
嵌套for循环和其他语言是类似的。
四、用range的for循环
go语言提供的range功能可以方便的遍历数组。具体用户法如下面示范程序。
for theIndex, v := range arrTheArray {
fmt.Println("theIndex= ", theIndex, " value= ",value, "arrTheArray[theIndex] =",arrTheArray[theIndex])
}
可以看出,第一个 theIndex 就是序号,第二个 v就是具体的值。这两个变量叫什么名字是没有关系的,只和放的顺序有关。第一个就是序号,第二个就是值。
可以对二维数组做range, 具体做法是一个维度一个维度的进行遍历,用双层for循环实现。如下面的程序。
for i, oneDArr := range twoDArr{
for j, value := range oneDArr{
fmt.Println(i,j, value)
}
fmt.Println("||")
}
整个程序如下:
package main
import "fmt"
func main(){
arrTheArray :=[5] float64 {1.2,3.4,5.6,7.6,8.2}
for theIndex, v := range arrTheArray {
fmt.Println("theIndex= ", theIndex, " v= ",v, "arrTheArray[theIndex] =",arrTheArray[theIndex])
}
var twoDArr[3][3] int
for i:=0;i<3;i++{
for j:=0;j<3;j++{
twoDArr[i][j]=i*10+j
}
}
// fmt.Println(twoDArr)
for i, oneDArr := range twoDArr{
for j, value := range oneDArr{
fmt.Println(i,j, value)
}
fmt.Println("||")
}
}
运行结果如下:
theIndex= 0 v= 1.2 arrTheArray[theIndex] = 1.2
theIndex= 1 v= 3.4 arrTheArray[theIndex] = 3.4
theIndex= 2 v= 5.6 arrTheArray[theIndex] = 5.6
theIndex= 3 v= 7.6 arrTheArray[theIndex] = 7.6
theIndex= 4 v= 8.2 arrTheArray[theIndex] = 8.2
0 0 0
0 1 1
0 2 2
||
1 0 10
1 1 11
1 2 12
||
2 0 20
2 1 21
2 2 22
||
五、分支
if - else 分支是和其他语言类似的。不同的是没有括号。如下面程序所示:
package main
import "fmt"
func main(){
i:=18;
j:=90;
if j%i>0 {
fmt.Println(j,"%",i," 这是偶数")
}else{
fmt.Println(j,"%",i," 这是奇数")
}
if j/i >5 {
fmt.Println(j,"/",i,">5")
}else if j/i ==5 {
fmt.Println(j,"/",i,"=",5)
}
}
执行结果如下:
D:\Documents\GoTrial>go run ifelse.go
90 % 18 这是奇数
90 / 18 = 5
go也有switch-case分支,和c,java是类似的。由于这种分支容易出错,不容易阅读,因此不提倡使用,应该用 if-else if -else 替代。
所以就不展开讲了。
2020-1-5 初始版本
网友评论