Explanation of checking if value implements interface

前端 未结 4 1303
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-05 04:22

I\'ve read \"Effective Go\" and other Q&As like this: golang interface compliance compile type check , but nonetheless I can\'t understand properly how to use this techn

4条回答
  •  情歌与酒
    2020-12-05 05:06

    You only have to check if a value implements an interface if you don't know the value's type. If the type is known, that check is automatically done by the compiler.

    If you really want to check anyways, you can do it with the second method you gave:

    var _ Somether = (*MyType)(nil)
    

    which would error at compile time:

    prog.go:23: cannot use (*MyType)(nil) (type *MyType) as type Somether in assignment:
        *MyType does not implement Somether (missing Method method)
     [process exited with non-zero status]
    

    What you are doing here, is assigning a pointer of MyType type (and nil value) to a variable of type Somether, but since the variable name is _ it is disregarded.

    If MyType implemented Somether, it would compile and do nothing

提交回复
热议问题