一条go语句就意味着并发执行一个函数。当循环迭代执行go语句时,要注意参数传递常见的一个疏忽。
如下:
| 代码如下 | 复制代码 |
|
package main | |
结果打印的全是golang字符串,跟我们预期不一样。
这是因为每次迭代都会给变量lang赋值,当迭代完毕后,3个goroutine还没有执行,当执行是而变量lang的值是最后一次迭代的值。
如果不想使用外部变量,可以通过添加参数:
| 代码如下 | 复制代码 |
|
func main() { | |
以下是交换函数 swap() 使用了引用传递:
/* 定义交换值函数*/
| 代码如下 | 复制代码 |
|
func swap(x *int, y *int) { | |
以下我们通过使用引用传递来调用 swap() 函数:
| 代码如下 | 复制代码 |
|
package main import "fmt" func main() { fmt.Printf("交换前,a 的值 : %dn", a ) /* 调用 swap() 函数 fmt.Printf("交换后,a 的值 : %dn", a ) func swap(x *int, y *int) { | |
以上代码执行结果为:
交换前,a 的值 : 100
交换前,b 的值 : 200
交换后,a 的值 : 200
交换后,b 的值 : 100
DeepSeek多模态怎么样及保姆级配置教程(codex、claude)实用指南
WSL2+Docker+Ollama本地部署大模型思路和实践指南(Qwen1.8b)实用指南
DeepSeek Harness热门插件盘点:10个实用插件,覆盖多Agent、上下文和多模态实用指南
grep文本搜索与正则表达式完整代码示例实用指南
AI漫剧伪装直男1‑24集无雾版夸克网盘资源免费分享
AI漫剧玉僧入尘1-68集无雾无删版夸克网盘资源免费分享