From http://golang.org/src/pkg/database/sql/driver/types.go:
type ValueConverter interface {
    // ConvertValue converts a value to a driver Value.
    ConvertValue(v interface{}) (Value, error)
}
var Bool boolType
type boolType struct{}
var _ ValueConverter = boolType{} // line 58
func (boolType) String() string { return "Bool" }
func (boolType) ConvertValue(src interface{}) (Value, error) {....}
I known that ValueConverter is an interface name. Line 58 seems to declare that boolType implement interface ValueConverter, but is that necessary? I deleted line 58 and the code works well.
                    
                        syntax
                                interface
                                go
                                underscores
                                
                    
                    
                        dilfish
fuente
                
                fuente

_se puede usar para proporcionar estrictamente las claves en una estructura. Vea esto como referenciaRespuestas:
Proporciona una comprobación estática (tiempo de compilación) que
boolTypesatisface laValueConverterinterfaz. El_usado como nombre de la variable le dice al compilador que descarte efectivamente el valor RHS, pero que lo verifique y evalúe si tiene algún efecto secundario, pero la variable anónima per se no ocupa ningún espacio de proceso.Es una construcción útil cuando se desarrolla y el conjunto de métodos de una interfaz y / o los métodos implementados por un tipo se cambian con frecuencia. La construcción sirve como una protección contra el olvido de hacer coincidir los conjuntos de métodos de un tipo y de una interfaz donde la intención es que sean compatibles. Previene eficazmente a
go installuna versión rota (intermedia) con tal omisión.fuente
Parece que está creando un valor ficticio de tipo
ValueConverter, asignándole un nuevoboolTypeobjeto y luego descartándolo (que es el significado del guión bajo en go, como enfor _, elt := range myRange { ...}si no estuviera interesado en el índice de la enumeración).Supongo que simplemente corresponde a una verificación estática para garantizar que la estructura
boolTypeimplemente laValueConverterinterfaz. De esta manera, cuando cambie la implementación deboolType, el compilador se quejará temprano si rompió la implementación de laValueConverterinterfaz, ya que no podrá enviar su nuevaboolTypea esta interfaz.fuente