Go 方法的调用和传参机制原理

本文详细解析了方法调用及传参机制,通过具体案例展示了如何通过变量调用方法,并解释了值类型和引用类型的参数传递区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法的调用和传参机制原理

  • 说明:
    • 方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法
    • 下面我们举例说明
      • 案例 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)
}
  • 输出结果:

  • 内存示意图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值