package main
type logged interface {
GetLogID() int64
}
func maxLogID(items []logged) int64 {
max := int64(0)
for _, item := range items {
if item.GetLogID() > max {
max = item.GetLogID()
}
}
return max
}
type A struct {
logID int64
}
func (a A) GetLogID() int64 {
return a.logID
}
type B struct {
logIDB int64
}
func (b B) GetLogID() int64 {
return b.logIDB
}
func main() {
items := make([]logged, 0)
items = append(items, A{10})
items = append(items, A{20})
items = append(items, B{30})
print(maxLogID(items))
}
Но я вам рекомендую использовать тот вариант, который я дал вам в ответе как самый эффективный, сейчас сделаю вам бенчмарки, чтобы вы убедились :)