Sto provando a calcolare la lunghezza necessaria per un array in un'implementazione di tipo merge che sto scrivendo in go
. Ecco come si presenta:Errore Go: array non costante associato
func merge(array []int, start, middle, end int) {
leftLength := middle - start + 1
rightLength := end - middle
var left [leftLength]int
var right [rightLength]int
//...
}
Allora ottengo questa denuncia quando si esegue go test
:
./mergesort.go:6: non-constant array bound leftLength
./mergesort.go:7: non-constant array bound rightLength
Presumo go
non gode utenti istanziazione lunghezza di un array con un valore calcolato. Accetta solo le costanti . Dovrei semplicemente rinunciare e usare una fetta invece? Mi aspetto una fetta è una matrice dinamica che significa che è una lista collegata o copia in una matrice più grande quando si riempie.
Cosa vuoi dire che "ti aspetti" una sezione è una matrice dinamica? [Leggi cosa è effettivamente una fetta] (https://blog.golang.org/go-slices-usage-and-internals). –
Ecco a cosa servono le Slice in Go. Sotto il cofano sono solo indicatori di array. – user937284
@TimCooper interessante. Invece di dare a Array un'interfaccia complessa, le slice sono un altro strato che semplifica la manipolazione degli array? – Breedly