CodeSampleX

Пример

golang.org/x/sync 0.22.0: CompareAndSwap and CompareAndDelete on syncmap.Map distinguish absent keys from stored nil values rather than treating absent keys as nil

Проверенный пример — golang golang.org/x/sync 0.22.0: CompareAndSwap and CompareAndDelete on syncmap.Map distinguish absent keys from stored nil values…

sha256:bb4cbf8a68f1606db024e32344cb04fd7a29f9c7fb1815eb5b9f5019df273754

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
2
Заявленная среда go linux x64 go go gomod

Среды запусков проверки

Окружение Контракт Этапы Запуск
go 1.26 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1
2026-08-17
go 1.26 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1
2026-08-18

Кейс

HOW
Цель
CompareAndSwap and CompareAndDelete on syncmap.Map distinguish absent keys from stored nil values rather than treating absent keys as nil
Пакеты
Символы
  • syncmap.Map
  • syncmap.Map.CompareAndSwap
  • syncmap.Map.CompareAndDelete
  • syncmap.Map.Swap
  • syncmap.Map.LoadAndDelete
  • syncmap.Map.Load
  • syncmap.Map.Store
Окружение
go
Создан
2026-08-17T23:39:23Z

Контракт

  1. CompareAndSwap on an absent key returns false when old is nil, but succeeds and returns true when the key was explicitly stored with nil
  2. CompareAndDelete returns false on absent keys when old is nil, and returns true only when the key was explicitly stored with nil
  3. Load and LoadAndDelete distinguish absent keys (loaded=false) from keys explicitly stored with nil (loaded=true)
  4. Swap overwrites any existing value and returns whether the key was previously present
  5. Passing an unhashable key type such as a slice panics at runtime with hash of unhashable type
  6. CompareAndDelete and CompareAndSwap panic when comparing against an existing value of identical incomparable slice type, but return false without panic when the stored type differs

Файлы

  • NOTES.md
  • csx.json
  • go.mod
  • go.sum
  • syncmap_test.go

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed