Golang 方法与函数的区别

方法和函数的区别

方法和函数最主要的区别是有无接收者。函数是独立定义的,不属于任何类型。

方法有一个特殊的参数,称为接收者(receiver),它定义了方法所属的类型,不一定是结构体,任何自定义类型都可以为之定义方法

调用方式:方法通过类型变量或指针进行调用,类似于面向对象编程中的对象的方法调用。函数可以直接通过函数名进行调用。

包外可见性:方法的可见性由接收者的可见性决定。如果是私有的,那么其方法也是私有的。函数的可见性由函数名的可见性决定

重载:函数支持重载,可以同名但是参数列表不一样,方法不行。

方法

type MyInt int
func (m MyInt) Double() int {
    return int(m * 2)
}

func main() {
    num := MyInt(5)
    doubled := num.Double()
    fmt.Println(doubled) // 输出:10
}
函数
func Double(a int) int {
    return a * 2
}
func main() {
    result := Double(5)
    fmt.Println(result) // 输出:10
}

值接收者(value receiver)和指针接收者

方法可以定义两种类型的接收者:值接收者(value receiver)和指针接收者,使用值接收者和指针接收者的主要区别在于方法对接收者是否会对原始值进行修改

type Counter struct {
    count int
}

func (c Counter) Increment() {
    c.count++
}

func (c *Counter) Decrement() {
    c.count--
}

func main() {
    //值接收者
    counter1 := Counter{count: 0}
    counter1.Increment()
    fmt.Println(counter1.count) // 输出0 未改变原始值

    //指针接收者
    counter2 := &Counter{count: 0}
    counter2.Decrement()
    fmt.Println(counter2.count) // 输出-1 修改了原始值
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值