golang设计模式