Golang Go语言中,请教,什么时候该用指针?

Golang Go语言中,请教,什么时候该用指针?
emm,开始学 go 的那一天,人们(其实就是我)有回忆起被指针支配的恐惧😱
哈哈哈,开个玩笑
不过最近这两天在看这方面的信息,网上充斥着指针式什么的文章
有没有说什么时候该用指针的,最佳实践,使用场景什么
求 v2 的大佬们不吝赐教

3 回复

其实在 Go 中,除了方法属主参数,指针使用的并不普遍,使用指针参数的主要目的是在函数内能够更改此指针所引用的值。指针有时候也用来避免较大的值赋值代价。比如将一个指针包裹在接口值中的代价比将一个非接口值包裹到接口值中的代价小得多。另一方面,过多的指针会影响垃圾回收的时长,一般这种情况发生在一个容器中含有大量包含指针的元素。

更多关于Golang Go语言中,请教,什么时候该用指针?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


奥,我好像理解那么一点了 谢谢大佬

在Golang(Go语言)中,指针是一个重要的概念,用于直接访问和修改变量的内存地址。关于何时使用指针,以下是一些常见的场景和建议:

  1. 修改传入参数:Go语言中函数参数默认是按值传递的。如果你希望函数能够修改传入的变量,就应该使用指针。这样,函数内部的操作会影响到原始变量。

  2. 节省内存:对于大型结构体或数组,传递指针可以避免复制整个数据结构,从而节省内存和提高性能。

  3. 表示可选值:在Go中没有内置的null或None类型,但可以使用指针来表示一个变量可能未初始化或为空。例如,*int 可以表示一个可能未设置的整数。

  4. 实现接口和多态:在某些情况下,你可能需要通过接口来引用不同类型的对象。使用指针可以实现多态,允许接口引用不同类型的实现。

  5. 避免循环引用:在涉及结构体嵌套或复杂数据结构时,使用指针可以避免循环引用导致的内存泄漏问题。

  6. 提高性能:在某些高性能要求的场景下,如并发编程或低延迟应用中,使用指针可以减少内存分配和垃圾回收的开销。

总之,在Go语言中,指针的使用应基于具体需求。在需要修改传入参数、节省内存、表示可选值、实现接口多态或提高性能时,使用指针是合理的选择。然而,对于简单的值传递和不需要修改原始变量的情况,直接使用值类型可能更为简洁和直观。

回到顶部