go中方法的调用和传参机制

一 点睛

方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。

二 机制剖析

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 图解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值