Home >Backend Development >Golang >Go colon equals operator and a new variable

Go colon equals operator and a new variable

PHPz
PHPzforward
2024-02-10 16:57:09538browse

Go 冒号等于运算符和一个新变量

php editor Xinyi is here to introduce a new feature to you - the Go colon equals operator and a new variable. The function of this operator is to create a new variable in the Go language and initialize it to the value of an expression. The introduction of this feature makes the code more concise and readable, while also reducing the amount of redundant code. By using the colon equals operator, we can assign a value to a variable while declaring it, improving the efficiency and readability of the code. In the following article, we will introduce the usage and precautions of this new feature in detail, hoping to bring help and inspiration to everyone.

Question content

This may not be a new question, but I can't find the answer anywhere.

With this code, neither the := nor the = operators work on the function call line inside the loop.

I have a use case where I need to declare a large array once outside the for loop and update it in the function and then pass it back. But the function also returns another variable that is different every time and used within that loop.

Go to the playground link: 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)
    }

}

How do I refactor this to work as expected?

Solution

How about declaring newVariable before :=?

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

The above is the detailed content of Go colon equals operator and a new variable. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete