«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу распаковать элементы массива непосредственно в переменные в Go?

Как я могу распаковать элементы массива непосредственно в переменные в Go?

Опубликовано 15 ноября 2024 г.
Просматривать:542

How Can I Unpack Array Elements Directly into Variables in Go?

Распаковка элементов массива в Go

В Go отсутствует удобный синтаксис для распаковки элементов массива непосредственно в переменные, который есть в Python. Хотя первоначальный подход спрашивающего с использованием промежуточной переменной работает, он может привести к загромождению кода, особенно в сложных сценариях.

Несколько возвращаемых значений

Для решения этой проблемы рекомендуется Решение состоит в том, чтобы создать функцию, которая возвращает несколько значений. Например, чтобы разделить строку и распаковать результаты в две переменные, можно использовать такую ​​функцию:

func splitLink(s, sep string) (string, string) {
    x := strings.Split(s, sep)
    return x[0], x[1]
}

С помощью этой функции для распаковки разделенной строки можно использовать следующий код:

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

Аргументы указателя с переменным числом аргументов

Другой подход заключается в использовании аргументов указателя с переменным числом аргументов, которые позволяют передавать в функцию несколько переменных-указателей и присваивать им значения массива. Вот как это работает:

func unpack(s []string, vars... *string) {
    for i, str := range s {
        *vars[i] = str
    }
}

Чтобы распаковать массив, можно использовать приведенный ниже код:

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

Этот подход позволяет распаковывать массивы любого размера, но требует явного объявления переменных и некоторые разработчики считают его менее читабельным.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3