Go Interfaces: Difference between revisions
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
An interface is a type declaration that defines a ''method set''. A method set is a list of methods a type must have in order to ''implement'' the interface. Interface type instances can be used as arguments to functions, an interface instance can be passed as argument to a function after declaring it as such in the function signature. | An interface is a type declaration that defines a ''method set''. A method set is a list of methods a type must have in order to ''implement'' the interface. Interface type instances can be used as arguments to functions, an interface instance can be passed as argument to a function after declaring it as such in the function signature. | ||
A type implements an interface implicitly, by doing nothing else but exposing all methods from the interface's method set. This is called [[Go Concepts - The Type System#Duck_Typing|duck typing]]. | |||
<font color=red> | <font color=red> | ||
Line 11: | Line 13: | ||
* Interfaces are not types? | * Interfaces are not types? | ||
* Can only structs be interfaces, or there are other things that can be interfaces? | * Can only structs be interfaces, or there are other things that can be interfaces? | ||
* Link from here to | * Link from here to . | ||
</font> | </font> | ||
Revision as of 17:18, 30 March 2016
Internal
Overview
An interface is a type declaration that defines a method set. A method set is a list of methods a type must have in order to implement the interface. Interface type instances can be used as arguments to functions, an interface instance can be passed as argument to a function after declaring it as such in the function signature.
A type implements an interface implicitly, by doing nothing else but exposing all methods from the interface's method set. This is called duck typing.
- Interfaces are not types?
- Can only structs be interfaces, or there are other things that can be interfaces?
- Link from here to .
Declaration
The interface declaration is introduced by the type keyword, to indicated that this is a user-defined type, followed by the interface name and the keyword interface. Unlike in the struct's case, we don't define fields but a method set.
type MyInterface interface { functionName1() return_type functionName2() return_type ... }