Поскольку не все типы сопоставимы, например. ломтик. Так что мы не можем этого сделать
var v ArbitraryType
v == reflect.Zero(reflect.TypeOf(v)).Interface()
Редактировать — Решение Reflect.DeepEqual
var v ArbitratyType
zero := reflect.Zero(reflect.TypeOf(v)).Interface()
isZero := reflect.DeepEqual(v, zero)
Перейти к документации по reflect.DeepEqual
DeepEqual проверяет глубокое равенство. Он использует нормальное равенство ==, где это возможно, но будет сканировать элементы массивов, срезов, карт и полей структур.