Это преобразование типов. Предполагая, что функция db.Model
принимает interface{}
, она отправляет нулевой интерфейс типа *Book
в функцию.
Чтобы преобразовать значение v
в тип Book
, вы должны написать:
Book(v)
Однако вы не можете написать Book(nil)
, поскольку nil
является указателем, а Book
нет. Если бы у вас был тип
type BookPtr *Book
Тогда вы могли бы написать BookPtr(nil)
. Расширяя это, вы хотите написать *Book(nil)
, но это означает *(Book(nil))
, что недопустимо, следовательно:
(*Book)(nil)