Golang 中函数(Function)和方法(Method)的区别详解

开发 后端
函数是 Golang 程序的基本组成部分之一,是一段独立的代码块,可以被独立地定义和调用。函数的定义以 Func 关键字开始,后面跟着函数名、参数列表、返回值类型和函数体。

在 Golang 中,大家必然会频繁使用到函数(Function)和方法(Method),但是有的同学可能并没有注意过函数和方法的异同点,函数(Function)和方法(Method)都是用来执行特定任务的代码块,虽然很相似,但也有很大的区别。本文将详细讲解函数和方法的定义以及它们的异同点。

函数(Function)

函数是 Golang 程序的基本组成部分之一,是一段独立的代码块,可以被独立地定义和调用。函数的定义以 func 关键字开始,后面跟着函数名、参数列表、返回值类型和函数体。看一个简单的函数定义示例:

func add(a b int) int {
    return a + b
}

函数的调用方式是通过函数名和参数列表完成的。例如:

result := add(2, 3)

函数的其他更多特点和类型就不展开讲了,不是本文的重点。本文只简单介绍下函数的基本定义,重点是说明函数和方法的异同点。

方法(Method)

方法是与特定类型(结构体类型、函数类型、接口类型等)相关联的函数。是在类型的定义之外定义的,但与该类型紧密关联。方法的定义类似于函数,但在函数名之前会添加一个接收者(receiver),指定方法属于哪个类型。以下是一个简单的方法示例:

type Rectangle struct {
    width  float64
    height float64
}

// 定义 Area 方法
func (r Rectangle) Area() float64 {
    return r.width * r.height
}

首先定义了一个名为 Rectangle 的结构体类型,然后定义了一个名为 Area 的方法,该方法接收一个 Rectangle 类型的接收者。

方法的调用与函数类似,但需要先实例化一个对应的接收者类型的实例,通过这个实例调用的方式来执行。例如:

rect := Rectangle{width: 3, height: 4}
area := rect.Area()

这段代码首先创建了一个 Rectangle 类型的实例,然后通过这个实例调用了 Area 方法。

可以看出,方法是通过接收者与类型绑定的,因此可以在方法内部访问接收者类型的字段和方法。而函数则是独立存在的,没有与特定类型相关联。

小结

函数和方法都是用来执行特定任务的代码块,定义和使用都非常类似,主要有两点不同:

  • 函数是独立存在的,而方法是与特定类型相关联的;
  • 函数可以直接调用,而方法调用需要通过对应的接收者类型实例。
责任编辑:姜华 来源: 今日头条
相关推荐

2013-07-30 13:35:12

methodfunction

2017-05-15 10:50:42

PythonBound MethoUnbound Met

2009-07-21 17:21:57

Scala定义函数

2023-11-27 15:02:37

BytesGolang

2023-10-18 08:22:38

BufioGolang

2023-10-31 09:10:39

2023-08-31 09:28:12

Golang可导出函数

2022-02-07 23:07:19

Golang语言Modules

2009-06-19 16:46:18

IntegerJava

2017-08-01 00:19:15

Javascript函数函数声明

2021-12-27 03:36:09

语言For Golang

2023-04-28 07:56:09

2023-05-11 08:00:44

Golangsync.Pool

2009-02-24 16:17:41

日期时间函数

2022-10-24 00:03:26

GolangNew函数

2009-06-26 16:23:12

Hibernate gHibernate l

2021-12-28 20:06:43

JavaScript开发数组

2023-05-15 08:50:58

ContextGolang

2023-03-30 07:52:03

Golang接口

2023-06-27 08:45:19

原子操作Golang
点赞
收藏

51CTO技术栈公众号