常用if
和for
,switch
和goto
属于扩展的
注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。
if else
func main() {
a := 1
if a < 0 { //格式比较严格,{不换行
fmt.Println("小于0")
} else if a == 0 {
fmt.Println("等于0")
} else { //格式比较严格,{不换行
fmt.Println("大于0")
}
}
if判断特殊写法
在if表达式之前添加一个执行语句,再根据变量值进行判断。
func main() {
if a := 1; a < 0 {
fmt.Println("小于0")
} else if a == 0 {
fmt.Println("等于0")
} else {
fmt.Println("大于0")
}
}
for
for 初始化语句; 条件表达式; 结束语句 {
循环体语句
}
func main() {
array := []byte{1, 2, 3}
for i := 0; i < len(array); i++ {
fmt.Println(array[i])
}
//初始语句可以被忽略,但是分号需要保留
i := 0
for ; i < len(array); i++ {
fmt.Println(array[i])
}
//初始语句和结束语句都可以省略
//次写法类似其它编程芋圆中华你乖乖的while
j := 0
for j < len(array){
fmt.Println(array[j])
j++
}
//无限循环
for {
//通过break、goto、return、panic语句强制退出循环
}
}
for range(键值循环)
可遍历数组、切片、字符串、map以及channel
1.数组、切片、字符串返回索引和值;
2.map返回键和值;
3.channel只返回通道内的值;
func main() {
str := "Hello"
for k,v := range str {
fmt.Printf("%d-%c\n", k, v)
}
}
switch case
func main() {
a := 1
switch a {
case 0:
fmt.Println("0")
case 1:
fmt.Println("1")
default:
fmt.Println("other")
}
}
func main() {
switch a := 1; a {
case 0, 2:
fmt.Println("0或者2")
case 1, 3:
fmt.Println("1或者3")
default:
fmt.Println("other")
}
}
func main() {
a := 1
switch {
case a > 1:
fmt.Println("大于1")
case a == 1:
fmt.Println("等于1")
default:
fmt.Println("小于")
}
}
fallthrough 可以执行满足条件的case的,再无无条件取执行下一个case,为了兼容C语言而设计。
已经是deprecated。
func main() {
a := 1
switch {
case a > 1:
fmt.Println("大于1")
case a == 1:
fmt.Println("等于1")
fallthrough
case a == 0:
fmt.Println("等于0")
default:
fmt.Println("小于0")
}
}
// 等于1
// 等于0
goto
尽量少用
func main() {
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++{
if j == 3 {
// break //跳出当前for循环
// continue //继续下一次循环
goto gotoTag
}
fmt.Printf("%d-%d\n",i, j)
}
}
gotoTag:
fmt.Printf("goto跳出")
}
break(跳出循环)
可以结束for
、switch
、select
的代码块。
break也可以添加标签,表示退出代码块,必修定义在对应的for
、switch
、select
的代码块上。尽量少用。
func main() {
BREAKTAG:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++{
if j == 3 {
// break //跳出当前for循环
// continue //继续下一次循环
break BREAKTAG
}
fmt.Printf("%d-%d\n",i, j)
}
}
fmt.Printf("break跳出")
}
continue(继续下次循环)
只用在 for
循环中。
continue也可以加标签,尽量少用。
有疑问加站长微信联系(非本文作者)