Добавить несколько значений, возвращаемых в аргумент fun c - PullRequest
0 голосов
/ 14 февраля 2020

Можно ли сжать эту операцию?

a, b := obtain2Values()
c = ":)"

process3Values(a, b, c)

в нечто подобное ? (Я знаю, что это точно не работает, но я ищу альтернативу, если она существует)

process3Values(obtain2Values(), ":)")

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Короче, боюсь, что нет. В общем, Go не очень хорош в «сжатии» выражений из-за способа возврата нескольких возвращаемых значений (ошибок мышления), которые нельзя передать как группу. Это затрудняет реализацию связанных функциональных выражений в соответствии с Linq в C# или чем-то вроде Loda sh в JavaScript. Вы всегда вынуждены обрабатывать разные возвращаемые значения отдельно. Это делает Go довольно трудоемким для написания, но в то же время очень явным, что является намерением - избежать ошибок.

0 голосов
/ 14 февраля 2020

Это работает:

package main

import "fmt"

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

func process3Values(a, b int, c string){
    fmt.Printf("%v %v %v\n", a, b, c)
}

func main() {
    a, b := obtain2Values()
    process3Values(a, b,":)")
    // process3Values(obtain2Values(), ":)")
}

process3Values ​​(receive2Values ​​(), ":)") не работает:

./prog.go:16:16: not enough arguments in call to process3Values
./prog.go:16:30: multiple-value obtain2Values() in single-value context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...