pointers - 指向 Golang 中的结构

标签 pointers go

我在执行以下代码时遇到错误:

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/

相关文章:

c - 高级 C 赋值错误

c - 从txt文件C中读取整数

go - 如何解码 map golang

html - 具有二维数组的用于 Web 开发的 Google Go 模板

pointers - 将指针传递给 Golang 中的 map

c - 指向下标的指针——strstr函数

c - 为什么此 C 代码片段不会导致段错误?

c - 使用它时是否可以在不使用 malloc 的情况下增加 char 数组?

go - 理解 go tool 编译和链接命令

go - html 未在电子邮件 golang 中翻译