«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему в Golang нет встроенной структуры данных?

Почему в Golang нет встроенной структуры данных?

Опубликовано 15 ноября 2024 г.
Просматривать:148

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

Забавное отсутствие заданной структуры данных в 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