一:多态在计算广告中的典型场景:
(1)广告召回之后,做一批的各种维度的过滤操作
关于多态的一个小例子:
type Animal interface {
Sound()
}
type Bird struct {
}
type Bee struct {
}
func (a *Bird) Sound() {
fmt.Println("Bird" + "\t" + "啾啾啾")
}
func (a *Bee) Sound() {
fmt.Println("Bee" + "\t" + "嗡嗡嗡")
}
func main() {
var animals []Animal
animals = append(animals, &Bird{},&Bee{})
for _, v := range animals {
v.Sound()
}
}
运行结果:
Bird 啾啾啾
Bee 嗡嗡嗡
二:除此之外,想要批量的执行一批任务,用传统的面向过程编程的办法也可以解决。
type AnimalFunc func()
func BirdFunc() {
fmt.Println("Bird" + "\t" + "啾啾啾")
}
func BeeFunc() {
fmt.Println("Bee" + "\t" + "啾啾啾")
}
func main() {
var animalFuncs []AnimalFunc
animalFuncs = append(animalFuncs, BirdFunc, BeeFunc)
for _, v := range animalFuncs {
v()
}
}
PS:本文演示了在golang中如何同步的执行一批任务。后续会引入异步的写法。使用任务池。