golang之工厂模式

说明:

  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())
}
posted @ 2019-12-23 21:48  顽强的allin  阅读(695)  评论(0编辑  收藏  举报