方法
定义
在函数名称之前加入一个额外的参数(接收方)
| Go |
|---|
| func (variable var_type) MethodName(parameters ...) {
// method functionality
}
|
示例
| Go |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | //创建一个名为 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 |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | 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())
}
|