Go+ for结合<-

Posted XiaoLin__Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+ for结合<-相关的知识,希望对你有一定的参考价值。

channel

< -是Go+里面的一个类型,叫channel,中文名叫管道,是Go+之间的一种通信机制,我们可以使用channel发送或者去接受数据,有点类似于Java的流编程。箭头方向表示数据的传递方向。

channel

channel和普通的类型一样,我们在使用之前也是需要去创建的,我们一般使用内置函数去创建。我们使用下面这种语法去声明一个chan int类型channel。

ch := make(chan int)

channel读操作

我们定义完channel以后就可以开始进行读操作了,切记的是,channel只有初始化以后才可以进行其他的操作。比如说读写,否则堵塞,而且是永久的,语法格式如下:

x <- ch

这段代码所表示的意思是从ch中读取数据,我们还有另一种方式去读取,这种方式会进行一个赋值操作。

x = <- ch

channel写操作

既然箭头的方向表示数据的流动方向,那么就意味着只要我们改变一下变量的文职即可将读操作反转为写操作。

ch <- x

关闭channel

channel和Java中的流一样,使用完以后需要去关闭流,否则会占用系统资源,我们可以使用内置函数close去关闭channel。

ch := make(chan int)
close(ch)

结合for循环

我们可以使用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

以上是关于Go+ for结合<-的主要内容,如果未能解决你的问题,请参考以下文章

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

Go 关键字

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

RadioGroup结合RadioButton使用切换Fragment片段