登录
首页 >  Golang >  Go问答

“Go 冒号的多功能:运算符和新变量”

来源:stackoverflow

时间:2024-03-20 15:21:29 488浏览 收藏

**摘要:** Go 语言中冒号 (:) 运算符拥有多种用途,既可用作赋值运算符,也可用作声明新变量的快捷方式。本文探讨了在循环内函数调用时使用冒号运算符的特殊情况。当需要在循环内更新函数中返回的数组并同时使用另一个在循环内不断变化的变量时,使用赋值运算符 (=) 无法正常工作。文章建议使用冒号运算符 (:=) 声明新变量,然后再进行赋值,以解决此问题。此方法允许在循环内对新变量进行局部修改,同时保持对外部数组的引用。

问题内容

这可能不是一个新问题,但我在任何地方都找不到答案。

使用此代码,在循环内的函数调用线上,:== 运算符都不起作用。

我有一个用例,我需要在 for 循环之外声明一次大数组并在函数中更新,然后传回。但该函数还返回另一个变量,该变量每次都不同并在该循环内使用。

去游乐场链接:1

import "fmt"

func someFunc(names []string) (int, []string) {
    foo := 35 // Just for the example
    names = append(names, "Bob")
    return foo, names
}

func main() {

    names := []string{"Fred", "Mary"}

    for i := 0; i < 10; i++ {
        newVariable, names := someFunc(names) // This line is the problem
        fmt.Println(newVariable)
    }

}

如何重构它以使其按预期工作?


正确答案


在 := 之前声明 newVariable 怎么样?

for i := 0; i < 10; i++ {
    var newVariable int
    newVariable, names = someFunc(names)
    fmt.Println(newVariable)
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《“Go 冒号的多功能:运算符和新变量”》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>