Quando si esegue una sottostringa di una stringa in Vai, non viene allocata alcuna nuova memoria. Invece, la rappresentazione sottostante della sottostringa contiene un puntatore Dati che è un offset del puntatore Dati della stringa originale.e il garbage collector Go
Ciò significa che se si dispone di una stringa di grandi dimensioni e si desidera tenere traccia di una piccola sottostringa, il garbage collector non sarà in grado di liberare una stringa grande finché non rilascio tutti i riferimenti alla sottostringa più corta.
Le fette presentano un problema simile, ma è possibile aggirare il problema eseguendo una copia della sottlice utilizzando copy(). Non sono a conoscenza di operazioni di copia simili per le stringhe. Qual è il modo più idiomatico e veloce per fare una "copia" di una sottostringa?
Questa è una specie di difetto di Go. Dovrebbe essere possibile usare make (string, foo [x: y]) per questo. – fuz