go 接口以及对象的使用

// Sample program to show how to declare methods and how the Go
// compiler supports them.
package main

import (
    "fmt"
)

// user defines a user in the program.
type user struct {
    name  string
    email string
}

// notify implements a method with a value receiver.
func (u user) notify() {
    fmt.Printf("Sending User Email To %s<%s>
",
        u.name,
        u.email)
}

// changeEmail implements a method with a pointer receiver.
func (u *user) changeEmail(email string) {
    fmt.Printf("change Email from <%s> To <%s>
", u.email, email)
    u.email = email
}

// main is the entry point for the application.
func main() {
    // Values of type user can be used to call methods
    // declared with a value receiver.
    bill := user{"Bill", "bill@email.com"}
    bill.notify()

    // Pointers of type user can also be used to call methods
    // declared with a value receiver.
    lisa := &user{"Lisa", "lisa@email.com"}
    lisa.notify()
    fmt.Println()
    // Values of type user can be used to call methods
    // declared with a pointer receiver.
    bill.changeEmail("bill@newdomain.com")
    bill.notify()

    // Pointers of type user can be used to call methods
    // declared with a pointer receiver.
    lisa.changeEmail("lisa@newdomain.com")
    lisa.notify()
}

输出

Sending User Email To Bill<bill@email.com>
Sending User Email To Lisa<lisa@email.com>

change Email from <bill@email.com> To <bill@newdomain.com>
Sending User Email To Bill<bill@newdomain.com>
change Email from <lisa@email.com> To <lisa@newdomain.com>
Sending User Email To Lisa<lisa@newdomain.com>
原文地址:https://www.cnblogs.com/sea-stream/p/10357492.html