< -
是Go+里面的一个类型,叫channel,中文名叫管道,是Go+之间的一种通信机制,我们可以使用channel发送或者去接受数据,有点类似于Java的流编程。箭头方向表示数据的传递方向。
channel和普通的类型一样,我们在使用之前也是需要去创建的,我们一般使用内置函数去创建。我们使用下面这种语法去声明一个chan int类型channel。
ch := make(chan int)
我们定义完channel以后就可以开始进行读操作了,切记的是,channel只有初始化以后才可以进行其他的操作。比如说读写,否则堵塞,而且是永久的,语法格式如下:
x <- ch
这段代码所表示的意思是从ch中读取数据,我们还有另一种方式去读取,这种方式会进行一个赋值操作。
x = <- ch
既然箭头的方向表示数据的流动方向,那么就意味着只要我们改变一下变量的文职即可将读操作反转为写操作。
ch <- x
channel和Java中的流一样,使用完以后需要去关闭流,否则会占用系统资源,我们可以使用内置函数close
去关闭channel。
ch := make(chan int)
close(ch)
我们可以使用channel来结合for
循环,比如说输出0-10,我们可以这样来写:
sum := 0
for i <- :11 {
println("i=",i)
}
如果我们这样写的话,他是从0开始,并且是不含尾的,也就是意味着如果我们写10的话,其实只会输出到9,所以我们要多写一位。
最后写一个小demo,计算0-100的和,我们可以使用channel结合for循环这样写,确实普通的for循环写起来更简单,也更容易阅读。
sum := 0
for i <- :101 {
sum += i
}
println(sum) // 5050