我们在使用Golang编程时,经常会使用到Golang比较特殊的一种写法,即:", OK"
使用场景:在一个表达式返回2个参数的时候使用,第一个参数是一个值或者nil,第二个参数是true/false或者一个错误error
1、在函数返回时检测到出错
func SomeFunc() error {
…
if value, err := pack1.Func1(param1); err != nil {
…
return err
}
…
return nil
}
2、用于通过defer使程序从panic中恢复执行
defer func() {
if err := recover(); err != nil {
log.Printf("run time panic: %v", err)
}
}()
3、检测映射中是否存在一个键值:key1在映射map1中是否有值?
if value, isPresent = map1[key1]; isPresent {
Process(value)
}
4、用于检测一个接口类型变量varI是否包含了类型T:类型断言
if value, ok := varI.(T); ok {
Process(value)
}
5、用于检测一个通道ch是否关闭
for {
if input, open := <-ch; !open {
break // 通道是关闭的
}
Process(input)
}
6、检测Policy是否存在
//从DB加载策略
e.LoadPolicy()
//获取router路由对象
r := gin.New()
r.POST("/api/v1/add", func(c *gin.Context) {
fmt.Println("增加Policy")
if ok, _ := e.AddPolicy("admin", "/api/v1/hello", "GET"); !ok {
fmt.Println("Policy已经存在")
} else {
fmt.Println("增加成功")
}
})