Распаковка элементов массива в 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