控制、循环这个是我们做逻辑的时候所必须的操作,在使用的层面并不太大区别,主要是一些使用注意事项。
if语句的基本上所有语言都统一的格式为
if (x > max) {
x = max
}
但是go提供了一个去掉括号的写法
if x > max {
x = max
}
去掉了括号那么就可以在if后面的条件中添加定义和运算,比如这样
if x := f(); x < y {
return x
} else if x > z {
return z
} else {
return y
}
但如果说是这样写,就会报错
if (x := f(); x < y) { // 语法错误
}
PS:例子引用自官方案例
swtich有两种格式,一种是表达式选择,一种是类型选择
switch processor.kind {
case "create":
creates = append(creates, processor)
case "update":
updates = append(updates, processor)
case "delete":
deletes = append(deletes, processor)
case "query":
queries = append(queries, processor)
case "row_query":
rowQueries = append(rowQueries, processor)
}
类型表达式在判断类型中使用,这种方式也可以被改成if-else的表达方式
func (u *UUID) Scan(src interface{}) error {
switch src := src.(type) {
case UUID: // support gorm convert from UUID to NullUUID
*u = src
return nil
case []byte:
*u = FromBytes(src)
return nil
case string:
*u = FromString(src)
return nil
}
return fmt.Errorf("uuid: cannot convert %T to UUID", src)
}
for循环跟if一样主要还是在for后面的表达式运算上不同
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("%d ", i)
}
}
go里面没有while这种可以无限循环的关键字,只需要
for { //这样就无限循环了
break //一样用break来跳出
}
还有一个for...range...的非常常用,主要用来遍历数据集合来,比如这样
var a [10]string
for i, s := range a {
// type of i is int
// type of s is string
// s == a[i]
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。