2013-12-10 5 views

ответ

14

Утверждение типа утверждает, что t (тип интерфейса) фактически является aType и t будет aType; а именно тот, который завернут в интерфейс t. Например. если вы знаете, что ваш var reader io.Reader на самом деле является *bytes.Buffer, вы можете сделать var br *bytes.Buffer = reader.(*bytes.Buffer).

Преобразование типа преобразует один (неинтерфейсный) тип в другой, например. a var x uint8 to и int64, например var id int64 = int64(x).

Правило большого пальца:: Если вам нужно обернуть свой конкретный тип интерфейсом и хотите, чтобы ваш конкретный тип возвращался, используйте утверждение типа (или переключатель типа). Если вам нужно преобразовать один конкретный тип в другое, используйте преобразование типа.

+0

"и t будет aType" - Можете ли вы подробно остановиться на этом? 't' не изменяется? – nemo

+0

@ nemo Я думаю, он сказал бы 'v', а не' t' –

+0

@LucianoQ: Нет, это 't' не' v'. @nemo: Нет 't' не изменяется с помощью утверждения типа или преобразования типа. Я настоятельно рекомендую Tour of Go и спецификацию языка. – Volker

Смежные вопросы