golang设计模式组合模式