为什么在我的情况下应该使用指针Golang

  • 本文关键字:指针 Golang 情况下 go
  • 更新时间 :
  • 英文 :


*带着一张纸条,我刚刚学会了golang

在我看来,我只是想为什么应该有一个指针,如果你只想用这个varA := 10, varB:= varA输入变量a到变量b的值(sry-idk-how the code to nextline(,而我不知道什么时候应该使用指针?

请跟随戈兰之旅。https://go.dev/tour/moretypes/1

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

指针的使用示例

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

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

  • https://medium.com/@meeusdylan/何时使用尖端s-in-44c15fe04eac
  • https://www.geeksforgeeks.org/pointers-in-golang/#:~:text=指针%20in%20Go%20编程%20语言,内存%20地址%20 in%20系统

何时使用值和指针取决于您将如何处理数据,并将影响数据在内存中的存储方式。

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

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

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

最新更新