Конвертировать / сложить несколько возвращаемых значений в структуру в Go - PullRequest
0 голосов
/ 10 октября 2019

Рассмотрим следующий пример:

package main

import "fmt"

func abc() (string, error) {
    return "x", nil
}

type Result struct {
    str string
    err error
}

func xyz(res Result) {
    fmt.Println(res)
}

func main() {
    str, err := abc()
    s := Result{str: str, err: err}
    xyz(s)
}

Я хочу избежать использования временных переменных

    str, err := abc()
    s := Result{str: str, err: err}

И непосредственно создать структуру s из возвращаемых значений abc(). Примерно так:

    s := Result{abc()} // Does not work: multiple-value abc() in single-value context

Другими словами, есть ли в Go ярлык для преобразования / сворачивания нескольких возвращаемых значений в структуру?

Примечание: не могуизменить подписи функций abc() и xyz() (библиотечные функции).

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

[Есть ли в Go ярлык для преобразования / сворачивания нескольких возвращаемых значений в структуру?

No.

0 голосов
/ 10 октября 2019

Я хочу избежать использования временных значений

И непосредственно создать структуру s из возвращаемых значений abc ()

Я полагаю, это зависит отваше определение «напрямую»

func MakeResult(str string, err error) Result {
  return Result{str, err}
}

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