Skip to content

方法 ​


定义 ​

在函数名称之前加入一个额外的参数(接收方)

Go
func (variable var_type) MethodName(parameters ...) {
    // method functionality
}

示例 ​

Go
//创建一个名为 triangle 的三角形结构
type triangle struct {
    size int
}
//创建计算方法
func (t triangle) perimeter() int {
    return t.size * 3
}
//调用方法
func main() {
    t := triangle{3}
    fmt.Println("Perimeter:", t.perimeter())
}

方法中的指针 ​

当需要修改接收方数据时,可以在方法中使用指针

Go
func (t *triangle) doubleSize() {
    t.size *= 2
}

func main() {
    t := triangle{3}
    t.doubleSize()
    fmt.Println("Size:", t.size)
    fmt.Println("Perimeter:", t.perimeter())
}

声明其他类型的方法 ​

方法需要为任何类型定义方法
基本类型(如 string)无法创建方法

Go
package main

import (
    "fmt"
    "strings"
)

type upperstring string

func (s upperstring) Upper() string {
    return strings.ToUpper(string(s))
}

func main() {
    s := upperstring("Learning Go!")
    fmt.Println(s)
    fmt.Println(s.Upper())
}