bool это базовый тип, поэтому структурой интерфейса будет runtime.eface посмотрим на само преобразование: LEAQ type.bool(SB), BX CMPQ AX, BX JNE main_main_pc180 CMPQ (compare, ==) сравнивает типы, а JNE (jump, как goto) при неудаче отправляет нас в панику: main_main_pc180: ... CALL runtime.panicdottypeE(SB) ... При удачном касте мы просто получим bool (по идее на сточке с LEAQ). Преобразование базовых типов намного быстрее чем структур с методами, поэтому я бы не волновался из-за производительности. + чтобы получить этот код мне пришлось "обмануть" компилятор, потому что он убирает проверки и берет значение напрямую (если не видит других типов в интерфейсе), что дает тебе скорость наравне с var b bool
"если вы этим занимаетесь — вы умный, не будьте умным"
Обсуждают сегодня