"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que Golang não possui uma estrutura de dados de conjunto nativo?

Por que Golang não possui uma estrutura de dados de conjunto nativo?

Publicado em 15/11/2024
Navegar:959

Why Doesn't Golang Have a Native Set Data Structure?

A curiosa falta de estrutura de dados definida de Golang

Em Golang, a necessidade fundamental de uma estrutura de dados definida levou à questão intrigante: Por que não é fornecido nativamente? Inspirando-se na influente biblioteca Guava do Google, por que os designers do Golang omitiram o suporte a uma estrutura tão fundamental, forçando os desenvolvedores a criar suas próprias implementações?

A resposta está na simplicidade de construir conjuntos usando mapas. Conforme demonstrado no trecho de código fornecido, os mapas podem ser aproveitados para criar conjuntos. Operações importantes, como verificação de existência, adição, remoção e execução de operações de conjunto (união, interseção) podem ser implementadas facilmente.

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

// Union
s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

// Intersection
s_intersection := map[int]bool{}
if len(s1) > len(s2) {
  s1, s2 = s2, s1 // better to iterate over a shorter set
}
for k,_ := range s1 { 
  if s2[k] {
    s_intersection[k] = true
  }
}

Embora essas implementações baseadas em mapas sejam suficientes para a maioria dos cenários práticos, alguns podem argumentar que uma implementação de conjunto nativo simplificaria e melhoraria a legibilidade do código. No entanto, para os desenvolvedores de Golang, compreender o uso de mapas como conjuntos é crucial tanto para a resolução de problemas quanto para a utilização eficiente de recursos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3