golang设计模式工厂模式