说明:
golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题
如果包里面的结构体变量首字母小写,引入后,不能直接使用,可以工厂模式解决:
ch1.go
package ch1 type student struct {
Name string
Score float64
} func NewStudent(n string, s float64) *student {
return &student{
Name: n,
Score: s,
}
}
main.go
package main import (
"fmt"
"work/ch1"
) func main() {
var stu = ch1.NewStudent("tom", 88.88)
fmt.Println(*stu)
fmt.Println("name=",stu.Name, "score=",stu.Score)
}
如何student结构体中的Score变成首字母小写的score,那么可以定义一个方法,用于获取score的值:
ch1.go
package ch1 type student struct {
Name string
score float64
} func NewStudent(n string, s float64) *student {
return &student{
Name: n,
score: s,
}
} func (s *student) GetScore() float64 {
return s.score
}
main.go
package main import (
"fmt"
"work/ch1"
) func main() {
var stu = ch1.NewStudent("tom", 888.88)
fmt.Println(*stu)
fmt.Println("name=",stu.Name, "score=",stu.GetScore())
}