golang两个坑实录

编程入门 行业动态 更新时间:2024-10-15 00:20:21

golang两个坑<a href=https://www.elefans.com/category/jswz/34/1766306.html style=实录"/>

golang两个坑实录

1. 不可将一个error的具体对象,复制给一个error的interface。同理,不能将一个具体的指针对象,复制给一个interface。因为在interface判断为nil的时候,即使指针其实是nil,但是因为是赋值给interface了。导致interface其实不为nil。

func TestTableConfigInfo(t *testing.T) {var err errorerr = fn()if err == nil {fmt.Printf("xx")} else {fmt.Printf("22")}viperInit()t.Log(TableConfigInfo)
}func fn() *errs.ErrsStruct {return nil
}func fn2() error {return nil
}

输出结果为22

2. 注意只有数字iota之后的变量和第一个自定义变量是一样的type。例如:

const (NILPOSITION Position = iotaBTNSBBBUTGUTG1UTG2MIDDLELJHJCOONLOOKER // 旁观者
)

但是如果是非数字。例如:

const (NotPlaying       PlayerStatus = "NotPlaying"       // 未入座Playing          PlayerStatus = "Playing"          // 正在玩牌Buying           PlayerStatus = "Buying"

则PlayerStatus = "Playing"和PlayerStatus = "Buying"中的PlayerStatus必不可少,否则如果写成

const (NotPlaying       PlayerStatus = "NotPlaying"       // 未入座Playing          = "Playing"          // 正在玩牌Buying           = "Buying"

)Playing和Buying的类型都是string,并不是PlayerStatus类型。

虽然 "Playing" == Playing还是返回true的,

但是在反射获取Playing类型时,得到的就不是预期的PlayerStatus类型,会导致隐藏的错误。

更多推荐

golang两个坑实录

本文发布于:2023-11-15 07:22:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1595870.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实录   两个   golang

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!