Как добавить несколько значений, возвращаемых функцией напрямую - PullRequest
0 голосов
/ 31 марта 2019

У меня есть следующий код.

package main

import "fmt"

func main() {
    a := 0
    b := 0
    a, b += getValues()
    fmt.Println(a, b)
}

func getValues() (a int, b int) {
    a = 0
    b = 5
    return
}

Я хочу добавить несколько значений, возвращаемых функцией.Я просто хочу, если в Go есть такое положение.

Когда я запускаю приведенный выше код, я получаю следующую ошибку.

syntax error: unexpected +=, expecting := or = or comma

1 Ответ

0 голосов
/ 31 марта 2019

Вы можете использовать вспомогательный метод, который принимает переменное число параметров и просто возвращает срез, созданный из параметров

func aggregator(res ...interface{}) []interface{}{
    return res
}

Если вы хотите избежать утверждения дополнительного типа, вы можете установить тип, с которым хотите работать, в вашем случае int, для входных и выходных параметров вспомогательной функции. Но вот пример использования interface{}:

func main() {
    fmt.Printf("%d, %d", aggregator(f())[0].(int), aggregator(f())[1].(int))
}

func aggregator(res ...interface{}) []interface{}{
    return res
}

func f () (int, int) {
    return 1,2 
}

Игровая площадка Go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...