Выполняя последнее упражнение Tour of Go , я решил, что мне нужна очередь из пар ( string
, int
). Это достаточно просто:
type job struct {
url string
depth int
}
queue := make(chan job)
queue <- job{url, depth}
Но это заставило меня задуматься: есть ли в Go встроенные типы данных пара / кортеж? Существует поддержка возврата нескольких значений из функции, но AFAICT, созданные кортежи с несколькими значениями не являются первоклассными гражданами в системе типов Go. Так ли это?
Что касается части «что вы пробовали», очевидный синтаксис (из точки зрения программиста Python)
queue := make(chan (string, int))
не сработало.
Вы могли бы сделать что-то подобное, если бы захотели
Однако я думаю, что то, что у вас уже есть, совершенно идиоматично, и структура идеально описывает ваши данные, что является большим преимуществом по сравнению с использованием простых кортежей.
источник