方法的调用和传参机制原理
- 说明:
- 方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。
- 下面我们举例说明
- 案例 1:
- 画出前面 getSum 方法的执行过程+说明
type Person struct{ Name string } 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
- 请编写一个程序,要求如下:
- 声明一个结构体 Circle, 字段为 radius
- 声明一个方法 area 和 Circle 绑定,可以返回面积。
- 提示:画出 area 执行过程+说明
type Circle struct { radius float64 } func (c Circle) area() float64 { return 3.14 * c.radius * c.radius } func main() { var c Circle c.radius = 4.0 res := c.area() fmt.Println("面积是=", res) }
- 输出结果:
- 内存示意图: