回答

收藏

关键字 var 后的下划线和接口名称是什么意思?

技术问答 技术问答 236 人阅读 | 0 人回复 | 2023-09-12

    type ValueConverter interface      / ConvertValue converts a value to a driver Value.    ConvertValue(v interface{}) (Value,error)}var Bool boolTypetype boolType struct{}var _ ValueConverter = boolType{} / line 58func (boolType) String() string { return "Bool" }func (boolType) ConvertValue(src interface{}) (Value,error) {....}
    1 Z6 q1 x' I- t* t8 g
我知道 ValueConverter 是接口名称。第 58 行似乎声明了 boolType 实现界面 ValueConverter,但是有必要吗?我删除了第 58 线,代码运行良好。( Z0 `5 D" W! X1 H) B( X
                                                                ; }6 P, R; E9 x  N6 s3 f0 ]3 h
    解决方案:                                                                ' A  h0 a; Z+ }; q* G2 F' V* _+ @
                                                                它提供了boolType满足ValueConverter检查接口静态(编译时)。_用作变量的名称告诉编译器有效丢弃RHS值,但类型检查和评估,如果有任何副作用,但匿名变量本身不采用任何过程空间。$ u' y% K# F; o! Z
当开发和接口的方法集和/或类型实现的方法经常发生变化时,它是一个方便的结构。该结构可以防止忘记匹配旨在兼容的类型和接口的方法集。有效防止go install这种遗漏损坏(中间)版本。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则