1.1.1. 一、说明:
在go语言中,定义一个结构体struct时,如果把首字母小写,那其他包就用不了这个结构体了。
使用这种特性,我们定义结构体时,可以把首字母小写,然后提供一个函数来创建这个结构体的实例。这就是简单的工厂模式。
1.1.2. 二、代码如下。
1、结构体student.go的内容:
package model
// 首字母小写,其他包用不了。
type student struct {
Name string
Age int
}
// 使用这个创建 student 实例
func NewStudent(name string,age int) *student {
// 返回对象的指针
return &student{
Name:name,
Age:age,
}
}
说明:
1、机构体student的首字母小写。
2、提供一个方法 NewStudent 创建student的实例。
2、main.go中使用如下:
package main
import (
"fangfaDemo/model"
"fmt"
)
func main() {
stu := model.NewStudent("张三",12)
fmt.Println(stu) // &{张三 12}
}
1.1.3. 三、如果把字段名小写。其他包不可见,可以提供一个Get方法获取值。
package model
// 首字母小写,其他包用不了。
type student struct {
Name string
age int
}
// 使用这个创建 student 实例
func NewStudent(name string,age int) *student {
return &student{
Name:name,
age:age,
}
}
// 提供GetAge方法获取小写的属性值。
func (stu *student) GetAge() int {
return stu.age
}
类似于java中,把属性private之后。提供getter、setter。
main中使用如下:
package main
import (
"fangfaDemo/model"
"fmt"
)
func main() {
stu := model.NewStudent("张三",19)
fmt.Println(stu.GetAge()) // 19
}