Interfaces in Object-Oriented Programming in Golang

package main

import "fmt"

type Animal interface {
    Sound() string
}

type Duck struct {
}

func (duck Duck) Sound() string {
    return "Quack"
}

type Cat struct {
}

func (cat Cat) Sound() string {
    return "Meo Meo"
}

func main() {
    var animal Animal
    duck := Duck{}
    cat := Cat{}

    animal = duck
    fmt.Println(animal.Sound())

    animal = cat
    fmt.Println(animal.Sound())

}    
        
Quack
Meo Meo