go的工厂模式是为了解决struct的命名为小写字母开头,在其他模块中不能调用的问题。正常来说只有大写字母开头的函数,结构体,结构体中的字段才能被其他多模块调用
构建工厂模式函数
package module type student struct { Name string Age int } #注意构造函数是个函数,而不是某个struct的方法,输入struct的相应字段,返回struct的指针 func Newstudent(n string, a int) *student { return &student{ Name: n, Age: a, } }
使用工厂模式
package main import ( "fmt" "gotest1/src/test/test69/module" ) func main() { s := module.Newstudent("张三", 14) #注意,返回的是个struct指针,所以使用*s来取值 fmt.Println(*s) #注意,使用struct.字段的时候,可以不加*,因为内部会进行加*处理 fmt.Println("Name:", s.Name, "Age:", s.Age) }