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
}

results matching ""

    No results matching ""