为了账号安全,请及时绑定邮箱和手机立即绑定

Go中标识符和表达式的区别

Go中标识符和表达式的区别

Go
吃鸡游戏 2021-07-02 01:13:40
http://golang.org/ref/spec#RangeClauseRangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .试图理解范围子句,特别是标识符和表达式之间的区别谢谢。
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

使用range关键字,您可以迭代许多事情并在这样做的同时分配结果。您可以分配给两件事:

  • 标识符(通过IdentifierList

  • 表达式(通过ExpressionList

身份标识

这些是用于内部循环的新变量。他们必须遵守标识符规则(Unicode 名称、无空格等)。如果使用这些,则必须:=在列表和range关键字之间使用运算符。

例子:

for i := range []int{1,2,3} {

    fmt.Println(i)

}

表达式

您不一定需要声明新变量,您可以使用现有变量,甚至可以评估返回存储位置的表达式。几个例子:


分配给一个指针(Play):


var i = 0


func main() {

    p := &i


    for *p = range []int{1,2,3} {

        fmt.Println(i)

    }

}

返回一个指针并分配它(Play):


var i = 0


func foo() *int {

    return &i

}


func main() {

    for *foo() = range []int{1,2,3} {

        fmt.Println(i)

    }

}


查看完整回答
反对 回复 2021-07-05
  • 1 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信