Golang interfaces: Difference between revisions
From wikinotes
(→Basics) |
(→Basics) |
||
Line 4: | Line 4: | ||
= Basics = | = Basics = | ||
<blockquote> | <blockquote> | ||
In go, many interfaces expose just a single method, and are named after the method they expose.<br> | |||
Frequently, interfaces are implemented on structs (but they can be for any type). | |||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
// declare an interface | // declare an interface |
Revision as of 03:24, 6 June 2022
Similar to other languages, interfaces in go define a contract of method-signatures that implementors must have.
Unlike other languages, golang interfaces are implicit -- an object with all of the required methods automatically satisfies an interface.
Basics
In go, many interfaces expose just a single method, and are named after the method they expose.
Frequently, interfaces are implemented on structs (but they can be for any type).// declare an interface type Writer interface { Write([]byte) (int, error) }// implement an interface (automatic if methods match) type PrinterWriter struct {} func (w PrinterWriter) Write(data []byte) (int, error) { // ... }var w Writer = PrinterWriter{} // <-- type 'Writer' w.Write([]byte("Foobar"))Libraries do not need to expose interfaces in go, you can create them for the subset of methods that are useful to you.