网站设计分析怎么写,wordpress js代码编辑器插件,wordpress栏目页调用内容,餐饮品牌全案设计公司1. 不可将一个error的具体对象#xff0c;复制给一个error的interface。同理#xff0c;不能将一个具体的指针对象#xff0c;复制给一个interface。因为在interface判断为nil的时候#xff0c;即使指针其实是nil#xff0c;但是因为是赋值给interface了。导致interface其…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类型会导致隐藏的错误。