标签:receive notify 存储 接收 进一步 指针传递 类型 探索 选择
package main import "fmt" // 定义一个notifier接口 // 通知类行为的一个接口 type notifier interface { notify() } // 定义一个用户类 type user struct { name string email string } // nofity是使用指针接收者实现的方法 func (u *user) notify() { fmt.Print("发送一条邮件给%s<%s>", u.name, u.email) } func main() { // 创建一个用户并复制 user := user{"小明", "1001**@qq.com"} sendNotification(&user) } func sendNotification(n notifier) { n.notify() }
./demo.go:25:18: cannot use user (type user) as type notifier in argument to sendNotification: user does not implement notifier (notify method has pointer receiver)
// nofity是使用指针接收者实现的方法 func (u user) notify() { fmt.Print("发送一条邮件给%s<%s>", u.name, u.email) }
// 创建一个用户并复制
user := user{"小明", "1001**@qq.com"}
sendNotification(user)
sendNotification(&user)
使用值:
package main import "fmt" // 定义一个notifier接口 // 通知类行为的一个接口 type notifier interface { notify() } // 定义一个用户类 type user struct { name string email string } // nofity是使用指针接收者实现的方法 func (u user) notify() { u.name = "小红" fmt.Print("发送一条邮件给%s<%s>", u.name, u.email) } func main() { // 创建一个用户并复制 user := user{"小明", "1001**@qq.com"} //sendNotification(user) sendNotification(&user) // 小明 fmt.Println(user.name) sendNotification(user) // 小明 fmt.Println(user.name) } func sendNotification(n notifier) { n.notify() }
使用指针:
package main import "fmt" // 定义一个notifier接口 // 通知类行为的一个接口 type notifier interface { notify() } // 定义一个用户类 type user struct { name string email string } // nofity是使用指针接收者实现的方法 func (u *user) notify() { u.name = "小红" fmt.Print("发送一条邮件给%s<%s>", u.name, u.email) } func main() { // 创建一个用户并复制 user := user{"小明", "1001**@qq.com"} //sendNotification(user) sendNotification(&user) // 小红 fmt.Println(user.name) } func sendNotification(n notifier) { n.notify() }
标签:receive notify 存储 接收 进一步 指针传递 类型 探索 选择
原文地址:https://www.cnblogs.com/will-xz/p/13053377.html