当引用其他包中的私有结构体时,需要使用到工厂模式来解决
main.go
package main
import (
"fmt"
"gocode/modeles"
)
// 工厂模式的使用
func main() {
stu := modeles.NewStudent("宋江", 20) // 获取modeles包的私有结构体
fmt.Println(*stu)
fmt.Println(stu.GetName()) // 获取modeles包的私有属性
}
modeles.go
package modeles
type student struct {
name string
Age int
}
// 定义一个可外部访问的方法,返回student结构体的指针
func NewStudent(name string, age int) *student {
return &student{
name: name,
Age: age,
}
}
// 定义一个可外部访问结构体绑定的方法,返回结构体的私有属性name
func (stu *student) GetName() string {
return stu.name
}