Golang 开发实战day14 - Reciver Functions with Pointers

🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴‍♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 开发实战day14 - 接收者函数与指针

  在 Golang 中,接收者函数是一种强大的工具,可以让我们更灵活地定义方法,提高代码的简洁性和可维护性。而指针则是 Golang 中另一种重要的概念,用于指向内存中的数据。当我们将接收者函数与指针结合使用时,我们可以获得更加强大的功能和灵活性。

1. 接收者函数与指针的基本概念

  接收者函数: 接收者函数是一种与结构体或接口相关联的一组函数,用于对该类型的数据进行操作。

接收者函数的语法如下:

1.1 接收者函数

func (receiver TypeName) methodName(parameters) {
    // 方法体
}

1.2 指针

  指针是指向内存地址的变量。使用指针可以访问和修改内存中的数据。指针的声明语法如下:

var pointerType *TypeName
pointerType := &variable

1.3 接收者函数与指针的结合

  我们可以在接收者函数的参数中使用指针类型,这样就可以直接修改结构体本身的数据,而不是副本。

2. 接收者函数与指针的优点

  • 提高效率: 使用指针可以避免值的复制,提高代码的运行效率。
  • 修改结构体数据: 可以直接修改结构体本身的数据,而不是副本。
  • 简洁易读: 代码更加简洁易读,易于理解。

3. 接收者函数与指针的示例代码

3.1 示例一、x, y轴移动

type Point struct {
    x int
    y int
}

func (p *Point) Move(dx int, dy int) {
    p.x += dx
    p.y += dy
}

func (p Point) String() string {
    return fmt.Sprintf("(%d, %d)", p.x, p.y)
}

func main() {
    point := Point{x: 10, y: 20}
    pointPtr := &point 			// 获取 point 的指针

    pointPtr.Move(5, 10) 		// 使用指针调用 Move 方法
    fmt.Println(point) 			// 输出 (15, 30)
    fmt.Println(pointPtr.String()) // 输出 (15, 30)
}

Output:
在这里插入图片描述

3.2 示例二 修改年龄

type Person struct {
	Name string
	Age  int
}

func (p *Person) SetAge(newAge int) {
	p.Age = newAge
}

func main(){
	person := Person{Name: "大雄", Age: 10}
    personPtr := &person

    personPtr.SetAge(40) // 使用指针调用 SetAge 方法
    fmt.Println(person.Age) // 输出 40(别问,问就是大雄经过时光机变中年人了)
}

Output:
在这里插入图片描述

3.3 示例三 匿名函数与函数指针结合

type MyString string

func (s *MyString) ToUpper() *MyString {
    // 利用匿名函数和strings.Map进行高效转换
		uppercase := strings.Map(func(r rune) rune {
			if r >= 'a' && r <= 'z' {
				return r - 32 // 使用 ASCII 差异有效地将小写转换为大写
			}
			return r // 保持其他字符不变
		}, string(*s))
		// 将转换后的字符串分配给 MyString 的基础值
		*s = MyString(uppercase)
    return s
}
func main(){
	str := MyString("hello , doraemon!")
	strPtr := &str

	strPtr.ToUpper() // 使用指针调用 ToUpper 方法
	fmt.Println(*strPtr)
}
HELLO , DORAEMON!

总结

  总之,接收者函数与指针是 Golang 中强大的工具,可以让我们更灵活地操作结构体数据,提高代码的效率和可读性。理解和掌握接收者函数与指针的使用技巧,可以帮助你写出更加优雅、高效的 Golang 代码。

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值