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>