Обобщенные типы

import (
    "fmt"
)

type vehicle interface {
    test()
}

type car struct{}

func (c cartest() {
    fmt.Println("Test car")
}

type truck struct{}

func (t trucktest() {
    fmt.Println("Test truck")
}

var list = []vehicle{
    car{},
    truck{},
}

for _, curVehicle := range list {
    curVehicle.test()
}