Skip to content

Interfaces

In Go, an interface is a type that defines a contract by specifying a set of method signatures. Any type that implements those methods satisfies the interface, allowing for polymorphism

Defining an interface

type shape interface {
area() float32
perimeter() float32
}

Define a rect struct

type rect struct {
width float32
height float32
}

Implement the interface

func (r rect) area() float32 {
return r.width * r.height
}
func (r rect) perimeter() float32 {
return 2 * (r.width + r.height)
}

Define a square struct

type square struct {
side float32
}

Implement the shape interface

func (s square) area() float32 {
return s.side * s.side
}
func (s square) perimeter() float32 {
return s.side * 4
}

Create a generic function that prints the area and perimeter of a shape

func print(s shape) {
fmt.Println("area is ", s.area());
}

Call the print function for both the shapes

func main() {
s := square{side: 10};
r := rect{width: 20, height: 10}
print(s)
print(r)
}