码迷,mamicode.com
首页 > 其他好文 > 详细

go当中寄生于变量的方法

时间:2017-09-03 22:18:45      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:email   log   int   方法   amp   send   ruby   ring   img   

这个东东,好像其它语言很少见呢。

印象中,ruby是可以这样的。

技术分享

package main

import (
	"fmt"
)

type user struct {
	name  string
	email string
}

//方法与函数的不同之处在于:函数是独立调用的,而方法寄生于变量来调用
//值接收者,主要用于不改变接收者的方法。
func (u user) notify() {
	fmt.Printf("Sending User Email to %s<%s>\n",
		u.name,
		u.email)
}

//指针接收者,主要用于要改变接收者的方法。
func (u *user) changeEmail(email string) {
	u.email = email
}

func main() {
	bill := user{"Bill", "bill@email.com"}
	bill.notify()

	lisa := &user{"Lisa", "lisa@email.com"}
	//go编译会执行的动作:(*lisa).notify()
	lisa.notify()

	//go在背后会执行的动作:(&bill).changeEmail ("bill@newdomain.com")
	bill.changeEmail("bill@newdomain.com")
	bill.notify()

	lisa.changeEmail("lisa@newdomain.com")
	//go编译会执行的动作:(*lisa).notify()
	lisa.notify()
}

  技术分享

go当中寄生于变量的方法

标签:email   log   int   方法   amp   send   ruby   ring   img   

原文地址:http://www.cnblogs.com/aguncn/p/7471136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!