Go Interfaces: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 7: Line 7:
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]].
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]]. There is no "implements" or "extends" keyword in Go.


<font color=red>
<font color=red>

Revision as of 17:20, 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. There is no "implements" or "extends" keyword in Go.

  • Interfaces are not types?
  • 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
     ...
}

Initialization