I am learning go. First time I use one of the standard packages I try to read through it’s code to learn more about the package. I also Want to get a feel for how go code is written. This particular example is from the flag
package.
Would someone be able to explain it to me? I just can’t wrap my head around it:
// isZeroValue determines whether the string represents the zero
// value for a flag.
func isZeroValue(flag *Flag, value string) bool {
// Build a zero value of the flag's Value type, and see if the
// result of calling its String method equals the value passed in.
// This works unless the Value type is itself an interface type.
typ := reflect.TypeOf(flag.Value)
var z reflect.Value
if typ.Kind() == reflect.Ptr {
z = reflect.New(typ.Elem())
} else {
z = reflect.Zero(typ)
}
return value == z.Interface().(Value).String()
}
I know reflection from Java and I do understand the purpose of this function but can’t understand how it accomplishes that.
The last line of the method is totally nonsensical to me:)
Thanks in advance