RS
Size: a a a
RS
АП
p
RS
RS
// здесь мы передаём копию структуры в интерфейс, через который вызывается функция
if err := Either(
ctx,
Owner{ID: UserID},
Authenticated{},
); err != nil {
panic(err)
}BenchmarkInterface-8 30738297 34.4 ns/op 16 B/op 1 allocs/op// здесь мы передаём функцию напрямую
if err := Either(
ctx,
Owner{ID: UserID}.Authorize,
Authenticated,
); err != nil {
panic(err)
}BenchmarkFunc-8 203849019 5.68 ns/op 0 B/op 0 allocs/opVM
// здесь мы передаём копию структуры в интерфейс, через который вызывается функция
if err := Either(
ctx,
Owner{ID: UserID},
Authenticated{},
); err != nil {
panic(err)
}BenchmarkInterface-8 30738297 34.4 ns/op 16 B/op 1 allocs/op// здесь мы передаём функцию напрямую
if err := Either(
ctx,
Owner{ID: UserID}.Authorize,
Authenticated,
); err != nil {
panic(err)
}BenchmarkFunc-8 203849019 5.68 ns/op 0 B/op 0 allocs/opАП
// здесь мы передаём копию структуры в интерфейс, через который вызывается функция
if err := Either(
ctx,
Owner{ID: UserID},
Authenticated{},
); err != nil {
panic(err)
}BenchmarkInterface-8 30738297 34.4 ns/op 16 B/op 1 allocs/op// здесь мы передаём функцию напрямую
if err := Either(
ctx,
Owner{ID: UserID}.Authorize,
Authenticated,
); err != nil {
panic(err)
}BenchmarkFunc-8 203849019 5.68 ns/op 0 B/op 0 allocs/opАП
RS
АП
АП
RS
type SomeStruct{}
func (SomeStruct) SomeMethod() bool { return true }
type SomeInterface interface { SomeMethod() bool }
var i SomeInterface = SomeStruct{}
i.SomeMethod()АП
RS
АП
АП
АП
АП
RS
float64 (зачем уже точно не помню) и у них Go выстрелил, в ногу правда, но это уже мелочи.АП