一 点睛
方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。
二 机制剖析
1 代码
package main
import "fmt"
type Person struct {
Name string
}
// 给 Person 结构体添加 getSum 方法,可以计算两个数的和,并返回结果。
func (p Person) getSum(n1 int, n2 int) int {
return n1 + n2
}
func main() {
var p Person
p.Name = "tom"
n1 := 10
n2 := 20
res := p.getSum(n1, n2)
fmt.Println("res=", res)
}
2 测试
res= 30
3 图解
4 说明
a 通过一个变量去调用方法时,其调用机制和函数一样。
b 不一样的地方时,变量调用方法时,该变量本身也会作为一个参数传递到方法。如果变量是值类型,则进行值拷贝,如果变量是引用类型,则进行地址拷贝)。
三 实战
1 需求
编写一个程序,要求如下。
a 声明一个结构体 Circle, 字段为 radius。
b 声明一个方法 area,和 Circle 绑定,可以返回面积。
2 代码
package main
import "fmt"
type Circle struct {
radius float64
}
// 声明一个方法 area 和 Circle 绑定,可以返回面积。
func (c Circle) area() float64 {
return 3.14 * c.radius * c.radius
}
func main() {
// 创建一个Circle 变量
var c Circle
c.radius = 4.0
res := c.area()
fmt.Println("面积是=", res)
}
3 测试
面积是= 50.24
4 图解