Golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。
一般结构体名称为大写字母开头才能被外部函数调用,用工厂模式来解决
示例:
student.go
package model // 定义一个结构体 type student struct { Name string Score float64 } // 因为student结构体首字母是小写,因此只能在model内部调用 // 通过工厂模式来解决外部调用问题 // NewStudent gongchang func NewStudent(n string, s float64) *student { a := &student{ Name: n, Score: s, } return a }
main.go
package main import ( "0426/gongchang/model" "fmt" ) func main() { // 创建要给Student实例 // var stu = model.Student{ // Name: "tom", // Score: 88.8, // } // 定student结构体是首字母小写,定义工厂模式来解决 var stu = model.NewStudent("tom~", 88.8) fmt.Println(*stu) }
原文:https://www.cnblogs.com/sonfer/p/12780677.html