Это утверждение типа и задокументировано в Go spe c здесь :
Значение ok истинно, если утверждение выполняется. В противном случае это ложь, и значение v является нулевым значением для типа T. В этом случае не возникает паники во время выполнения.
При проверке на месте и несоответствии типов значение будет установлено "нулевое" значение типа float32 (число), поэтому 0.
Без проверки времени выполнения вы должны быть абсолютно уверены, что тип будет совпадать, а spe c диктует пани * Если нет, произойдет 1018 *.
Этот шаблон ничем не отличается от basi c проверка ошибок, например,
// v, err := someapi(). // Should check err ...
v, _ := someapi() // deliberately ignore error
v.SomeMethod() // ... Panic as v probably nil if there was an error