Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Define the interface

Code Block
type Greeter interface {
	Greet(username string)
}


Create an Object(struct and functions) that will implement the interface. 

Code Block
type NiceGreeter struct {}

func (g NiceGreeter) Greet(username string){
	fmt.Printf("Hi %s ",username)
}

In the above, we can see that we simply implement the function of the interface.

We link the type (Object) to the function using (db DefaultDatabse) in the above code.


Use the interface

Define an Object(struct) that uses the interface

Code Block
type Program struct {
	Greeter Greeter
}

func (p Program) Execute(user string){
	p.Greeter.Greet(user)
}


Code Block
func main(){

	//instantiate the greeter that implements Greeter
	greeter := NiceGreeter{}

	//instantiate the program with our greeter
	p:= Program{
		Greeter: greeter,
	}

	//execute
	p.Execute("bob")
}


Full Code Example

Code Block
package main

import "fmt"

type Greeter interface {
	Greet(username string)
}

type NiceGreeter struct {}

func (g NiceGreeter) Greet(username string){
	fmt.Printf("Hi %s ",username)
}

type Program struct {
	Greeter Greeter
}

func (p Program) Execute(user string){
	p.Greeter.Greet(user)
}

func main(){

	greeter := NiceGreeter{}
	p:= Program{
		Greeter: greeter,
	}
	p.Execute("bob")
}



References