方法
定义
在函数名称之前加入一个额外的参数(接收方)
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())
}