github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/BlackHatGo/Chap01/Interface/main.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  type Person struct {
     6  	Name string
     7  	Age int
     8  }
     9  
    10  func (p * Person) SayHello() {
    11  	fmt.Println("Hello ", p.Name, ", You are ", p.Age)
    12  }
    13  
    14  type Friend interface {
    15  	SayHello()
    16  }
    17  
    18  func Greet (f Friend) {
    19  	f.SayHello()
    20  }
    21  
    22  type Dog struct {}
    23  
    24  func (d * Dog) SayHello() {
    25  	fmt.Println("Woof woof")
    26  }
    27  
    28  func main() {
    29  	var guy = new(Person)
    30  	guy.Name = "Dave"
    31  	guy.Age = 37
    32  	Greet(guy)
    33  	var dog = new(Dog)
    34  	Greet(dog)
    35  }