在项目中有时会定义一个小写的结构体,如下定义了一个学生的结构体,首字母小写代表private。这时其他包是不能调用该结构体获取。
type student struct {
Name string
age int
}
解决方法 -- 工厂模式:
定义一个 GetStudent函数,传入结构体所需的参数,返回student结构体的指针。
其中age属性也是小写的,也不能直接访问,定义一个GetAge 方法,返回age字段。
package studentPackage
type student struct {
Name string
age int
}
func GetStudent(n string, a int) *student {
return &student{n, a}
}
func (s *student) GetAge() int {
return s.age
}
调用该包
package main
import (
"fmt"
"gocode/struct/studentPackage"
)
func main() {
stu := studentPackage.GetStudent("tom", 18)
fmt.Println("stu = ", *stu)
fmt.Println("名字是", stu.Name)
fmt.Println("年龄是", stu.GetAge())
}