007

package main

import "fmt"

type person struct {
    fname string
    lname string
}

type secretAgent struct {
    person
    licenseToKill bool
}

func (p person) speak() {
    fmt.Println(p.fname, p.lname, `says, "Good morning, James."`)
}

func (sa secretAgent) speak() {
    fmt.Println(sa.fname, sa.lname, `says, "Shaken, not stirred."`)
}

type human interface {
    speak()
}

func saySomething(h human) {
    h.speak()
}

func main() {
    p1 := person{
        "Miss",
        "Moneypenny",
    }

    sa1 := secretAgent{
        person{
            "James",
            "Bond",
        },
        true,
    }

    saySomething(p1)
    saySomething(sa1)
}

// Miss Moneypenny says, "Good morning, James."
// James Bond says, "Shaken, not stirred."

Last updated

Was this helpful?