В go есть функции, которые возвращают два значения или больше значений, обычно одна из них является ошибкой. Предположим, что я хочу сохранить первое возвращаемое значение в уже инициализированную переменную, но я хотел бы инициализировать переменную, содержащую встроенную ошибку. Есть ли способ сделать это?
Например, скажем, у меня был этот код
var a int
//This code doesn't compile because err doesn't exist
a, err = SomeFuncWithTwoReturnValues()
//This code doesn't compile either
a, err := SomeFuncWithTwoReturnValues()
Я знаю, что вы могли бы это сделать, но я надеялся, что есть способ сделать это все inline
var a int
var err error
a, err = SomeFuncWithTwoReturnValues()
или
a, err := SomeFuncWithTwoReturnValues()
EDIT: приведенный выше код действительно компилируется, поэтому я снова посмотрел на свой код, чтобы развернуть больше, и создал быстрый образец, который фактически реплицирует проблему (не только в моем сознании...).
package main
func myfunc() (int, int) {
return 1, 1
}
func main() {
a := make([]int, 1)
a[0], b := myfunc()
a[0] = b
}
Компилятор говорит main.go|9| non-name a[0] on left side of :=
. Если я сделаю это =
вместо :=
, но тогда b никогда не будет создан. У меня возникает ощущение, что нет короткого способа сделать это, хотя.