В Go функция может напрямую возвращать только одно значение. Однако существует несколько методов, которые можно использовать для возврата нескольких значений из функции Go. Вот некоторые распространенные подходы:
- Использование нескольких возвращаемых значений: Go позволяет возвращать несколько значений из функции, указав их в сигнатуре функции, разделенных запятыми. Например:
func multipleValues() (int, string) {
return 42, "Hello"
}
Затем вы можете вызвать эту функцию и получить несколько возвращаемых значений следующим образом:
num, str := multipleValues()
- Возврат структуры данных. Другой способ вернуть несколько значений — инкапсулировать их в структуру данных, например структуру или массив. Вы можете определить собственный тип структуры, содержащий значения, которые вы хотите вернуть, и вернуть экземпляр этой структуры из функции. Например:
type Result struct {
Number int
Text string
}
func multipleValues() Result {
return Result{Number: 42, Text: "Hello"}
}
Затем вы можете получить доступ к возвращаемым значениям следующим образом:
result := multipleValues()
num := result.Number
str := result.Text
- Использование указателей: Go позволяет передавать указатели в качестве аргументов функции, что позволяет изменять значения, на которые они указывают. Передавая указатели на функцию, вы можете эффективно возвращать несколько значений, изменяя указанные значения внутри функции. Например:
func multipleValues(numPtr *int, strPtr *string) {
*numPtr = 42
*strPtr = "Hello"
}
Вы можете вызвать эту функцию, передав адреса переменных и получить обновленные значения:
var num int
var str string
multipleValues(&num, &str)
После вызова функции переменные numи strбудут иметь измененные значения.