golang `range` 关键字是否会破坏 uint 类型信息?

考虑这个 golang 程序:


func main() {

    one := uint(1)

    ones := []uint{1, 1, 1}

    for x := range ones {

        if x != one {

            print("ERR")

        }

    }

}

当我尝试编译时出现意外错误:


$ go build foo.go 

# command-line-arguments

./foo.go:7: invalid operation: x != one (mismatched types int and uint)

为什么 go thinkx有 typeint而不是uint?


扬帆大鱼
浏览 191回答 1
1回答

繁星淼淼

返回的第一个值range是索引,而不是值。你需要的是:func main() {    one := uint(1)    ones := []uint{1, 1, 1}    for _, x := range ones {        if x != one {            print("ERR")        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go