
golang中的方法接收器分为两种:指针接收器和非指针接收器
package main
import "fmt"
type Person struct {
Age int
Name string
}
// 带*的接收器称为指针接收器
// 传入过来的是person实例的指针
// 可改变person实例属性
// 当需要改变person实例属性时需要带*
// 另外如果结构体内存占用较大,传指针会更省内存
func (p *Person) changeName(name string) {
p.Name = name
}
// 不带*的接收器为非指针接收器
// 传入的是person实例的值的拷贝
// 所以在内部更改属性后不生效
func (p Person) changeAge(age int) {
p.Age = age
}
func main() {
p := Person{}
fmt.Printf("%v", p)
p.changeName("胡巴")
p.changeAge(30)
fmt.Printf("%v", p)
}
公众号: 无限递归
Copyright © 2017 - 2025 boboidea.com All Rights Reserved 波波创意软件工作室 版权所有 【转载请注明出处】