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>\n",
        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>\n", 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>

 

posted @ 2019-02-09 14:56  anobscureretreat  阅读(301)  评论(0编辑  收藏  举报