go当中寄生于变量的方法

简介: 这个东东,好像其它语言很少见呢。 印象中,ruby是可以这样的。 package main import ( "fmt" ) type user struct { name string email string } //方法与函数的不同之处在于:函数是独立调用的,而方法寄生于变量来调用 //值接收者,主要用于不改变接收者的方法。

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

印象中,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变量,使用var和:=来声明变量,声明变量的三种方式
这篇文章介绍了Go语言中使用`var`和`:=`声明变量的三种不同方式,包括声明单个或多个变量、通过值确定数据类型以及在函数体内使用`:=`声明局部变量。
初识go变量,使用var和:=来声明变量,声明变量的三种方式
|
5月前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
60 9
|
6月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
165 11
|
7月前
|
大数据 Shell Go
GO方法与自定义类型
本文详细介绍了 Go 语言中的自定义数据类型与方法。不同于传统的面向对象编程语言,Go 通过结构体 (`struct`) 和方法 (`method`) 来扩展自定义类型的功能。文章解释了如何定义结构体、创建方法,并探讨了值接收器与指针接收器的区别及应用场景。此外,还介绍了方法的可见性以及接收器的命名惯例。通过具体示例,帮助读者更好地理解和应用这些概念。
|
8月前
|
存储 Ubuntu Go
在Ubuntu 16.04上安装Go 1.6的方法
在Ubuntu 16.04上安装Go 1.6的方法
102 1
|
8月前
|
存储 Ubuntu Go
在Ubuntu 18.04上安装Go的方法
在Ubuntu 18.04上安装Go的方法
128 1
|
8月前
|
存储 Ubuntu Linux
在Ubuntu 14.04上安装Go 1.6的方法
在Ubuntu 14.04上安装Go 1.6的方法
123 1
|
8月前
|
Go
Go1.22 新特性:for 循环不再共享循环变量,且支持整数范围
Go1.22 新特性:for 循环不再共享循环变量,且支持整数范围
|
8月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
8月前
|
安全 Go

热门文章

最新文章

下一篇
oss创建bucket