Вы можете вернуть несколько переменных из функции:
func A (s string) (string, int) {
a := "hello world"
b := 99
return a, b
}
c, d := A("Hi there.")
Я хотел бы отметить одну вещь: в Go строки не являются указателями. В таких языках, как C, вы привыкли думать о string
как о char*
, однако в Go, string
рассматривается как примитив так же, как вы бы int
.
Это, кажется, время от времени путает людей, однако на самом деле это довольно приятно, так как вам не нужно беспокоиться о указателях со строками.
Если вы окажетесь в ситуации, когда вы хотите вернуть строку nil
(что вы не можете сделать, потому что это не указатель), тогда вы вернете пустую строку (""
).
Указатели : Если вы действительно хотите использовать указатели ...
func A (s string) (*string, int) {
a := "hello world"
b := 99
// NOTE: you have to have a variable hold the string.
// return a, &"hello world" // <- Invalid
return a, &b
}
// 'd' is of type *string
c, d := A("Hi there.")
var sPtr *string = d
var s string = *d // Use the * to dereference the pointer