为什么我会得到非数字类型 *int 的错误?

huangapple go评论165阅读模式
英文:

Why I am getting non-numeric type *int error?

问题

在下面的示例中,我遇到了非数字类型 *int 的错误,为什么会这样?

func main() {
    count := 0
    for {
        counting(&count)
    }
}

func counting(count *int) {
    fmt.Println(count)
    count++
}

这个错误是因为在 Go 语言中,指针类型不能直接进行自增操作。在 count++ 这一行,你需要使用 *count 来获取指针指向的值,并将其加一。修改后的代码如下:

func main() {
    count := 0
    for {
        counting(&count)
    }
}

func counting(count *int) {
    fmt.Println(*count)
    *count++
}

这样就可以避免非数字类型错误了。

英文:

I am getting non-numeric type *int error in the example below, why ?

func main() {
	count := 0
	for {
		counting(&count)
	}
}

func counting(count *int) {
	fmt.Println(count)
	count++
}

答案1

得分: 5

你需要取消引用指针:

package main

import (
	"fmt"
)

func main() {
	count := 0
	for i := 0; i < 10; i++ {
		counting(&count)
	}
}

func counting(count *int) {
	fmt.Println(*count)
	*count++
}

你需要取消引用指针,使用*count来访问指针所指向的值。

英文:

You need to derefence the pointer:

package main

import (
	&quot;fmt&quot;
)

func main() {
	count := 0
	for i:=0; i&lt;10; i++ {
		counting(&amp;count)
	}
}

func counting(count *int) {
	fmt.Println(*count)
	*count++
}

huangapple
  • 本文由 发表于 2017年8月18日 04:44:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/45744683.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定