How to Achieve Multiple Assignments from Arrays in Go?

Linda Hamilton
Release: 2024-11-12 11:35:01
Original
316 people have browsed it

How to Achieve Multiple Assignments from Arrays in Go?

Multiple Assignments from Arrays in Go

In Python, unpacking from arrays can be done elegantly with assignments like:

a, b = "foo;bar".split(";")
Copy after login

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]
}
Copy after login

You can then assign directly from the function call:

name, link := splitLink("foo\thttps://bar", "\t")
Copy after login

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
    }
}
Copy after login

This allows you to assign values to multiple variables:

var name, link string
unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template