登录
首页 >  Golang >  Go问答

为什么在我的 Golang 案例中应该使用指针?

来源:stackoverflow

时间:2024-04-25 23:09:38 340浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《为什么在我的 Golang 案例中应该使用指针?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

*附上我刚学golang的说明

在我看来,我只是想为什么应该有一个指针,如果你只想用这个 varA := 10, varB:= varA(sry idk 如何将代码输入到下一行,将变量 a 的值输入到变量 b )并且我很困惑何时使用指针?


正确答案


请关注golang之旅。 https://go.dev/tour/moretypes/1

go编程语言或golang中的指针是一个变量,用于存储另一个变量的内存地址。 golang中的指针也被称为特殊变量。变量用于在系统中的特定内存地址存储一些数据。内存地址总是以十六进制格式找到(以 0x 开头,如 0xffaaf 等)[https://www.geeksforgeeks.org/pointers-in-golang]。 在传递之前制作大型数据类型(如结构)的副本会花费时间并且会消耗内存。这是程序员更喜欢大数据类型指针的另一个原因。

指针的使用示例

package main
 
import "fmt"
 
func main() {
 
    // taking a normal variable
    var x int = 5748
     
    // declaration of pointer
    var p *int
     
    // initialization of pointer
    p = &x
 
        // displaying the result
    fmt.println("value stored in x = ", x)
    fmt.println("address of x = ", &x)
    fmt.println("value stored in variable p = ", p)
}

输出:

Value stored in x =  5748
Address of x =  0x414020
Value stored in variable p =  0x414020

查看以下可能对您有用的文章:

何时使用值和指针取决于您要对数据执行的操作,并将影响数据在内存中的存储方式。

如果您计划仅在本地函数中操作数据,请使用该值。将数据存储在本地函数本身的上下文中(称为堆栈),并且几乎没有垃圾收集开销。

如果您计划将数据传递到其他函数,并且不希望该函数中的代码影响该函数的数据视图,请使用该值。这样,当您将数据传递到其他地方时,您将传递数据的副本。该副本将存在于该函数的本地堆栈中。

如果您计划将数据传递到其他地方,但希望此处发生的更改对您的代码可见,或者如果您的数据太大而无法复制,请使用指针。当您拥有指针时,您实际上保存的是数据的内存地址而不是数据本身,因此当您传递此地址时,在任何影响原始数据的地方进行的所有更改都会发生 - 数据本身永远不会被复制。这是通过将数据移动到一种称为堆的全局数据存储系统来完成的,只有在确定使用该地址的所有位置都不再起作用后,go 才会从堆中删除数据(这个过程称为垃圾收集)。

终于介绍完啦!小伙伴们,这篇关于《为什么在我的 Golang 案例中应该使用指针?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>