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