05-方法
@
1. 概述
-
什么是方法
一个方法就是一个包含了接受者的函数。所有给定类型的方法属于该类型的方法集。 -
接收者
接收者类型可以是(除接口外)任何类型。 -
语法
func (接收者 接收者类型) 方法名(参数 参数类型) [返回值 返回类型]{
/* 函数体*/
}
2. 简单示例
- 完整代码
package main
import (
"fmt"
)
type Circular struct {
name string //结构体里成员可以定义很多,但不一定用到。
r float64
}
func (circular Circular) CalculateArea() float64 {
return 3.14 * circular.r * circular.r //该方法只用到了结构体的半径这个成员。
}
func main() {
var myCircular Circular
myCircular.r = 10.00
fmt.Println("圆的面积 = ",myCircular.CalculateArea())
}
【诠释】
我们定义了:
- 一个
Circular
的结构体类型- 一个
CalculateArea
的方法(其接收者为Circular
)使用时:
- 实例化了一个叫
circular
的结构体,类型为Circular
- 调用方法时使用
结构体名.方法名()
- 结果输出:
圆的面积 = 314
3. 完整示例
我们写一个规范一些的例子
- 完整代码
package main
import "fmt"
type XiShu struct {
ID int
Name string
Age int
Position string
}
func (xiShu *XiShu)Run()(result string) {
if xiShu.Age >= 18 {
result = xiShu.Name+"是一个成年人"
return result
}else {
result = xiShu.Name+"还没有长大"
return result
}
}
func main () {
liuBei := XiShu{
ID: 0,
Name: "刘备",
Age: 28,
Position: "主公",
}
liuBeiResult := liuBei.Run()
fmt.Println(liuBeiResult)
zhaoYun := XiShu{
ID: 5,
Name: "赵云",
Age: 16,
Position: "五虎上将",
}
zhaoYunResult := zhaoYun.Run()
fmt.Println( zhaoYunResult)
}
- 结果输出
刘备是一个成年人
赵云还没有长大