Multiple Assignments from Arrays in Go
In Python, unpacking from arrays can be done elegantly with assignments like:
a, b = "foo;bar".split(";")
Go does not support such general packing/unpacking. However, there are several ways to achieve multiple assignments.
Custom Functions:
One approach is to create a custom function that returns multiple values, like:
func splitLink(s, sep string) (string, string) { x := strings.Split(s, sep) return x[0], x[1] }
You can then assign directly from the function call:
name, link := splitLink("foo\thttps://bar", "\t")
Variadic Pointer Arguments:
Another option is to use variadic pointer arguments:
func unpack(s []string, vars... *string) { for i, str := range s { *vars[i] = str } }
This allows you to assign values to multiple variables:
var name, link string unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)
Choice of Approach:
The custom function approach may be more readable for common scenarios where you want to split and assign only two variables. For more complex or variable-sized array scenarios, the variadic pointer arguments approach may be more flexible.
The above is the detailed content of How to Achieve Multiple Assignments from Arrays in Go?. For more information, please follow other related articles on the PHP Chinese website!