Deduplicarea Valorilor din Memorie și Comparații Instantanee cu Pachetul unique în Go 1.23 în Go

Ghid complet pentru pachetul standard unique introdus în Go 1.23: interning-ul canonic și deduplicarea șirurilor sau structurilor în memorie, reducerea consumului de RAM și comparații ultrarapide la nivel de pointer O(1).

Sintaxă
import "unique" | handle := unique.Make(valoare); if h1 == h2 { ... }

În aplicațiile care procesează volume uriașe de date (cum ar fi indexarea de jurnale, compilatoare, servere DNS sau rutarea rețelelor), milioane de instanțe ale aceluiași șir de caractere (de exemplu coduri de țară, adrese IP sau etichete HTTP) sunt alocate repetat pe heap, irosind sute de megabytes de memorie RAM. Pachetul unique introdus în Go 1.23 oferă mecanismul oficial de Interning Canonic: garantează că există o singură copie în memorie pentru valori identice și returnează o referință ușoară (Handle).

Deduplicarea șirurilor și comparație O(1) cu unique.Make
package main

import (
    "fmt"
    "unique"
)

type AdresaIP string

func main() {
    ip1 := "192.168.1.100"
    ip2 := "192.168.1.100" // Poate proveni dintr-o altă alocare de buffer

    // 1. Crearea mânerului canonic (Handle):
    // Dacă valoarea există deja în tabela internă, 'unique.Make' returnează mânerul existent!
    h1 := unique.Make(ip1)
    h2 := unique.Make(ip2)

    // 2. Comparație instantanee la viteza unui simplu pointer O(1):
    // Nu mai compară caracterele unul câte unul! Compară doar adresa de memorie canonică:
    if h1 == h2 {
        fmt.Println("Adresele IP sunt identice (comparație O(1) de pointer)!")
    }

    // 3. Extragerea valorii originale:
    valoareOriginala := h1.Value()
    fmt.Printf("Valoare: %s
", valoareOriginala)
}