• 作者:老汪软件技巧
  • 发表时间:2024-12-25 11:04
  • 浏览量:

基本概念:

方法(Method) 和 函数(Function) 在 Go 语言中是两个不同的概念,尽管它们在语法上有一些相似之处,但它们的定义和使用方式是不同的。

1. 函数(Function)

func FunctionName(parameters) returnType {
    // 函数体
}

func Add(a int, b int) int {
    return a + b
}

2. 方法(Method)

func (receiverName receiverType) MethodName(parameters) returnType {
    // 方法体
}

type MyStruct struct {
    Field int
}
func (m MyStruct) Add(a int) int {
    return m.Field + a
}

3. 方法和函数的区别特性函数方法

定义位置

独立的代码块,不属于任何类型。

与特定类型(如结构体)关联。

接收者

没有接收者。

有接收者(receiver),绑定到某个类型。

调用方式

直接调用。

通过类型的实例调用。

访问字段

不能直接访问类型的字段。

可以访问接收者的字段。

用途

用于通用的逻辑处理。

_函数语法是什么意思_常用函数语法格式

用于操作或扩展类型的行为。

4. 示例对比函数

func Add(a int, b int) int {
    return a + b
}
func main() {
    result := Add(3, 5) // 直接调用函数
    fmt.Println(result) // 输出: 8
}

方法

type MyStruct struct {
    Field int
}
func (m MyStruct) Add(a int) int {
    return m.Field + a
}
func main() {
    s := MyStruct{Field: 10}
    result := s.Add(5) // 通过实例调用方法
    fmt.Println(result) // 输出: 15
}

5. 方法的接收者类型

方法的接收者可以是值类型或指针类型:

func (m MyStruct) Add(a int) int {
    return m.Field + a
}

func (m *MyStruct) Increment() {
    m.Field++
}

总结


上一条查看详情 +class 的继承和 prototype 继承 是完全一样 ?
下一条 查看详情 +没有了