我在执行以下代码时遇到错误:
package main
import (
"fmt"
)
type Struct struct {
a int
b int
}
func Modifier(ptr *Struct, ptrInt *int) int {
*ptr.a++
*ptr.b++
*ptrInt++
return *ptr.a + *ptr.b + *ptrInt
}
func main() {
structure := new(Struct)
i := 0
fmt.Println(Modifier(structure, &i))
}
这给了我一个关于“ptr.a 的无效间接(int 类型)...”的错误。还有为什么编译器不给我关于 ptrInt 的错误?提前致谢。
最佳答案
就这样
func Modifier(ptr *Struct, ptrInt *int) int {
ptr.a++
ptr.b++
*ptrInt++
return ptr.a + ptr.b + *ptrInt
}
你实际上试图在 *(ptr.a)
上应用 ++
而 ptr.a
是一个 int,而不是一个指向 int 的指针。
你可以使用 (*ptr).a++
但这不是必需的,因为如果 ptr
是一个,Go 会自动解决 ptr.a
指针,这就是你在 Go 中没有 ->
的原因。
关于pointers - 指向 Golang 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931605/