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.
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