1. 云栖社区>
  2. PHP教程>
  3. 正文

go语句参数传递

作者:用户 来源:互联网 时间:2017-12-01 11:57:48

参数传递语句

go语句参数传递 - 摘要: 本文讲的是go语句参数传递,一条go语句就意味着并发执行一个函数。当循环迭代执行go语句时,要注意参数传递常见的一个疏忽。如下:package mainimport ("fmt""time")func main() {langs :=[]string {"java",

一条go语句就意味着并发执行一个函数。当循环迭代执行go语句时,要注意参数传递常见的一个疏忽。
如下:
package mainimport ("fmt""time")func main() {langs :=[]string {"java", "php", "golang"}for _,lang := range langs {go func() {fmt.Println(lang)}()}time.Sleep(time.Second)}


结果打印的全是golang字符串,跟我们预期不一样。
这是因为每次迭代都会给变量lang赋值,当迭代完毕后,3个goroutine还没有执行,当执行是而变量lang的值是最后一次迭代的值。
如果不想使用外部变量,可以通过添加参数:
func main() {langs :=[]string {"java", "php", "golang"}for _,lang := range langs {go func(lang string) {fmt.Println(lang)}(lang)}time.Sleep(time.Second)}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数 , 传递 语句 ,以便于您获取更多的相关知识。