Есть ли у Голанга план поддержки заданной структуры данных? - PullRequest
0 голосов
/ 30 июня 2018

Эта функция может быть реализована с помощью «карты».

countrySet := map[string]bool{
  "US": true,
  "JP": true, 
  "KR": true,
}

Но чтобы облегчить глаза читателей, «набор» является необходимой структурой данных.

countrySet := set[string]{"US", "JP", "KR"}

Или init 'map' только с ключами. Например:

countrySet := map[string]bool{"US", "JP", "KR"}

Есть ли у golang план поддержки такого синтаксиса?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

План состоит не в том, чтобы поддерживать все в стандартной библиотеке Go. План состоит в том, чтобы поощрять открытые, независимо разработанные пакеты. Например, один из многих,

комплекты

import "k8s.io/apimachinery/pkg/util/sets"

Наборы пакетов имеют автоматически сгенерированные типы наборов.

0 голосов
/ 30 июня 2018

Я не знаю о таких планах.

Что вы можете сделать, чтобы облегчить инициализацию:

Используйте однобуквенную bool константу:

const t = true
countrySet := map[string]bool{"US": t, "JP": t, "KR": t}

Используйте цикл для добавления ключей, поэтому вам нужно всего лишь перечислить ключи:

countrySet := map[string]bool{}
for _, v := range []string{"US", "JP", "KR"} {
    countrySet[v] = true
}

Это выгодно, только если у вас есть больше элементов.

Но вы всегда можете создать вспомогательную функцию:

func createSet(es ...string) map[string]bool {
    m := map[string]bool{}
    for _, v := range es {
        m[v] = true
    }
    return m
}

А затем используя его:

countrySet := createSet("US", "JP", "KR")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...