Golang中为什么targetPositions无法传递到内部循环?
Golang中为什么targetPositions无法传递到内部循环? 我还没有尝试编译。我还在整理代码。这只是VSCode在找麻烦吗?当我鼠标悬停时,它显示变量未定义。文本是匹配的;拼写上没有细微差别。
没关系。我搞明白了。变量 targetPositions 只存在于我调用的函数所属的一个代码块中,类似于 Rust 中的所有权概念。我之前没有理解这一点。

更多关于Golang中为什么targetPositions无法传递到内部循环?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
我喜欢 if x, ok := func(); !ok { 这种写法。
因为它能节省代码行数。可惜的是,需要预先声明这一点让它变得不那么实用。
:= 非常方便,但也有些棘手。我希望规则是:如果变量未定义,就创建它。
可能为时已晚。
更多关于Golang中为什么targetPositions无法传递到内部循环?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
targetPositions 和 ok 是 if 代码块作用域内的局部变量。如果你希望在其他地方也能使用它们,请在 if 语句之前声明它们。
targetPositions, ok := ...
if !ok {
}
// 此处可以访问 targetPositions
另请参阅 Go 语言之旅
由该语句声明的变量其作用域仅在
if语句结束之前有效。


