Interfaces in Go

Go: Interfaces

Interfaces are named collections of method signatures.

It defines a set of behaviors that a type must implement in order to be considered an instance of that interface.

How to define an interface in Go:

Here's an example of how to define an interface in Go:

    type Shape interface {
        Area() float64
        Perimeter() float64
    }

In this example, we define an interface called Shape that has two method signatures: Area() and Perimeter(). Any type that implements these two methods will be considered an instance of the Shape interface.

How to implements an interface in Go

To implement an interface, we have to define a struct and provide implementations for the methods in the interface:

    type Rectangle struct {
        Width  float64
        Height float64
    }

    func (r Rectangle) Area() float64 {
        return r.Width * r.Height
    }

    func (r Rectangle) Perimeter() float64 {
        return 2 * (r.Width + r.Height)
    }

In this example, we define a struct called Rectangle with two fields: Width and Height. We then provide implementations for the Area() and Perimeter() methods in the Shape interface. Since the Rectangle struct has these two methods, it is considered an instance of the Shape interface.

How to create a function using interface

You can use an interface to create a function that accepts any type that implements the interface:


    func PrintShapeInfo(s Shape) {
        fmt.Println("Area:", s.Area())
        fmt.Println("Perimeter:", s.Perimeter())
    }

    r := Rectangle{Width: 10, Height: 5}
    PrintShapeInfo(r)