Perché non tutti i tipi sono comparabili, ad es. una fetta. Quindi non siamo in grado di fare questoCome sapere se una variabile di tipo arbitrario è zero in Golang?
var v ArbitraryType
v == reflect.Zero(reflect.TypeOf(v)).Interface()
Edit - Soluzione reflect.DeepEqual
var v ArbitratyType
zero := reflect.Zero(reflect.TypeOf(v)).Interface()
isZero := reflect.DeepEqual(v, zero)
documentazione Go circa reflect.DeepEqual
test DeepEqual l'uguaglianza forte. Utilizza la normale == uguaglianza laddove possibile, ma analizzerà elementi di matrici, sezioni, mappe e campi di strutture.
Hi Rhythmic, Grazie della risposta! In effetti, == e DeepEqual sono diversi. DeepEqual funziona sia per la variabile comparabile che per quella non confrontabile, secondo il documento go [reflect.DeepEqual] (https://golang.org/pkg/reflect/#DeepEqual) – v1ct0r
Devo ancora comprenderlo, lo controllerò , Grazie. –