go语音之进阶篇方法面向过程和对象函数的区别

Posted nulige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语音之进阶篇方法面向过程和对象函数的区别相关的知识,希望对你有一定的参考价值。

1、方法 (method)

在面向对象编程中,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,我们称为方法(method)。 本质上,一个方法则是一个和特殊类型关联的函数。

一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需要直接去操作对象,而是借助方法来做这些事情。

在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法。

方法总是绑定对象实例,并隐式将实例作为第1实参 (receiver),方法的语法如下:

func (receiver ReceiverType) funcName(parameters) (results)
  1. 参数 receiver 可任意命名。如方法中未曾使用,可省略参数名。
  2. 参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接?或指针。
  3. 不支持重载方法,也就是说,不能定义名字相同但是不同参数的方法

2、为类型添加方法

示例:

package main

import "fmt"

//面向对象,方法:给某个类型绑定一个函数
func Add01(a, b int) int {
	return a + b
}

type long int

//tmp叫接收者,接收者就是传递的一个参数
func (tmp long) Add02(other long) long {
	return tmp + other
}

func main() {
	var result int
	result = Add01(1, 1) //普通函数调用方式
	fmt.Println("result = ", result)

	//定义一个变量
	var a long = 2

	//调用方法格式: 变量名.函数(所需参数)
	r := a.Add02(3)
	fmt.Println("r = ", r)

}

执行结果:

result =  2
r =  5      //long =2  传给tmp, a.add02(3) 传给(other long)

 

 

 

 

以上是关于go语音之进阶篇方法面向过程和对象函数的区别的主要内容,如果未能解决你的问题,请参考以下文章

go语音之进阶篇方法的重写

go语音之进阶篇显式调用panic函数

go语音之进阶篇字符串操作常用函数介绍

go语音之进阶篇方法表达式

go语音之进阶篇接口的定义和实现以及接口的继承

20220713GO语音的结构体和面向对象