package main import "fmt" type FactoryInterface interface { CreateProduct(t string) ProductInterface } // 创建工厂结构体并实现工厂接口 type Factory1 struct { } func (f Factory1) CreateProduct(t string) ProductInterface { switch t { case "product1": return Product1{} default: return nil } } // 产品接口 type ProductInterface interface { Intro() } // 创建产品1并实现产品接口 type Product1 struct { } func (p Product1) Intro() { fmt.Println("this is product 1") } func main() { // 创建工厂 f := new(Factory1) p := f.CreateProduct("product1") p.Intro() }