Go Interfaces: Difference between revisions
Line 5: | Line 5: | ||
=Overview= | =Overview= | ||
An interface is a type declaration that defines a ''method set''. | An interface is a type declaration that defines a ''method set''. The method set is a list of methods a type must have in order to ''implement'' the interface. | ||
<font color=red> | <font color=red> |
Revision as of 18:08, 30 March 2016
Internal
Overview
An interface is a type declaration that defines a method set. The method set is a list of methods a type must have in order to implement the interface.
- Can only structs be interfaces, or there are other things that can be interfaces?
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 ... }
Making a Type Implement an Interface
Passing Interfaces to Functions
Interface instances can be used as arguments to functions.
A pointer to the interface instance can be passed as argument to a function after declaring that the function accepts a parameter of that interface type in the function signature.
Passing an interface pointer insures that the function body can rely on the fact the interface methods are available on the passed instance.
- When passing an interface to a function, you should always pass a pointer to the instance implementing the interface, not the value of the instance implementing the interface.
In the example below, the f() function expects an interface
func f(a A) { }