Забавное отсутствие заданной структуры данных в Golang
В Golang фундаментальная потребность в заданной структуре данных привела к загадочному вопросу: почему разве он не предусмотрен изначально? Черпая вдохновение из влиятельной библиотеки Google Guava, почему дизайнеры Golang отказались от поддержки такой фундаментальной структуры, заставляя разработчиков создавать свои собственные реализации?
Ответ заключается в простоте создания наборов с использованием карт. Как показано в предоставленном фрагменте кода, карты можно использовать для создания наборов. Ключевые операции, такие как проверка существования, добавление, удаление и выполнение операций над множествами (объединение, пересечение), могут быть легко реализованы.
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 } }
Хотя этих реализаций на основе карт достаточно для большинства практических сценариев, некоторые могут утверждать, что собственная реализация набора упростит и улучшит читаемость кода. Тем не менее, для разработчиков Golang понимание использования карт в виде наборов имеет решающее значение как для решения проблем, так и для эффективного использования ресурсов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3