gpt4 book ai didi

pointers - 如何为指针参数分配地址

转载 作者:IT王子 更新时间:2023-10-29 02:30:54 24 4
gpt4 key购买 nike

我正在尝试编写一个接受 struct 指针并将其指向另一个地址的函数。

我知道我可以简单地编写一个函数,它接受一个指针并像这样操作 struct 字段:

func ManipulateStruct(myPointer *MyStruct) {
myPointer.Field1 = "new value"
myPointer.Field2 = 10
}

但是,是否可以这样写:

func ManipulateStruct(myPointer *MyStruct) {
newPointer := new(MyStruct)
newPointer.Field1 = "new value"
newPointer.Field2 = 10

// myPointer = &newPointer <-- illegal
// cannot use &newPointer (type **MyStruct) as type *MyStruct in assignment

myPointer = newPointer
}

最佳答案

使用 new 生成指向您的 struct 的指针,因此您需要像 this 这样的指针:

package main

import "fmt"

func main() {
var ptr *MyStruct
ManipulateStruct(&ptr)
fmt.Println(ptr)
}
func ManipulateStruct(myPointer **MyStruct) {
newPointer := new(MyStruct)
newPointer.Field1 = "new value"
newPointer.Field2 = 10
*myPointer = newPointer
}

type MyStruct struct {
Field1 string
Field2 int
}

输出:

&{new value 10}

关于pointers - 如何为指针参数分配地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55175988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com