linuxea:go流程控制之for range(15)

for range在go中非常常用,可以遍历字符串,数组,切片,映射,管道。

for range

一般而言,for range遍历,有一个索引和一个值,这与需要变量的对象有关。 简单的认为一个是索引index,和一个value即可

desc := "我是marksugar"
for index,value := range desc {
    fmt.Printf("%d %T %q\n",index,value,value)
}

运行

[root@marksugar /opt/Golang]# go run for3.go 
0 int32 '我'
3 int32 '是'
6 int32 'm'
7 int32 'a'
8 int32 'r'
9 int32 'k'
10 int32 's'
11 int32 'u'
12 int32 'g'
13 int32 'a'
14 int32 'r'
  • 在for range中,如果不需要index或者value,可以使用_(下划线)不接收

    desc := "我是marksugar"
    for _,value := range desc {}
    注意:这里的空白标识符是go内置,我们只能对它进行赋值

比如下面这段代码:

var value int
_,value = 1,2
fmt.Println(value)
这里的输出是2。这里值得注意的是,因为空白标识符是内置的,不能使用:=(冒号)定义 。如果一定要使用:=赋值,在简短声明中,至少需要有一个是新定义的。那么需要如下定义:

package main
import "fmt"
func main(){
var value int
_,value = 1,4
fmt.Println(value)
}
运行:

[root@linuxea-marksugar /opt/Golang/work2]# go run biaoshifu.go
4
如果这里使用简短声明就会报错的

command-line-arguments

./biaoshifu.go:5:10: no new variables on left side of :=
./biaoshifu.go:7:1: syntax error: unexpected EOF, expecting }
如果我们要使用简短声明就需要一个新的变量,如下

package main
import "fmt"
func main(){
var value int
_,value,newvalue := 1,4,5
fmt.Println(value,newvalue)
}
运行

[root@linuxea-marksugar /opt/Golang/work2]# go run biaoshifu.go
4 5

0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2019-10-21分类: Golang

标签: Golang

发表评论