is there any possibility to typedef a type with its method in go?

188 views Asked by At

How do I make the below code works? I want to call the Age method with Gents type.

package main

type Man struct {
}

func (man *Man) Age() {
}

type Gents Man

func main() {
    var m1 Man
    m1.Age()

    var g1 Gents
    g1.Age()
}
1

There are 1 answers

0
Suyash Medhavi On

Basically, you want to do inheritance

package main

import "fmt"

type Man struct {
    Year int
}

func (man *Man) Age() int {
    return 2022 - man.Year
}

type Gents struct {
    Man // anonymous field
}

func main() {
    var m1 = Man{
        Year: 1995,
    }
    fmt.Println(m1.Age()) // 27
    var g1 = Gents{
        Man{
            Year: 2002,
        },
    }
    fmt.Println(g1.Age()) // 20
}

go playground link