Наборы существуют в Go? (как в Python) - PullRequest
10 голосов
/ 12 августа 2011

Есть ли коллекция Go, похожая на 'Set's in python?

альтернативы:

  • Есть ли простой способ реализации Sets в Go?
  • Есть ли способ устранения дубликатов в срезе?

Ответы [ 2 ]

9 голосов
/ 12 августа 2011

Вы можете просто получить map[whatevertype]bool и установить значение true. Вы можете добавить каждый элемент в срез в качестве ключа карты, а затем использовать range, чтобы вернуть только уникальные элементы.

package main
import "fmt"
func main() {
    m := make(map[string]bool)
    s := make([]string, 0)
    s = append(s, "foo")
    s = append(s, "foo")
    s = append(s, "foo")
    s = append(s, "bar")
    s = append(s, "bar")
    for _, r := range s {
        m[r] = true
    }
    s = make([]string, 0)
    for k, _ := range m {
        s = append(s, k)
    }
    fmt.Printf("%v\n", s)
}
2 голосов
/ 12 августа 2011

На данном этапе в golang нет установленной реализации. Вам нужно будет сделать это самостоятельно или получить стороннюю библиотеку. Также вот хороший пост в блоге:

http://openmymind.net/2011/7/15/Learning-Go-By-Benchmarking-Set-Implementation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...