美文网首页
go的工厂模式

go的工厂模式

作者: StevenQin | 来源:发表于2019-09-28 21:11 被阅读0次

    说明

    go的结构体没有构造函数,通常是用工厂模式来解决这个问题

    • 使用工厂模式来解决跨包引的私有结构体的问题
      目录结构


    modal.go

    package model
    
    type students struct {
        Name   string
        scores float64
    }
    
    //student结构体是小写的,因些只能在Model使用
    func NewStudent(n string, s float64) *students {
        return &students{
            Name:   n,
            scores: s,
        }
    }
    
    //如果score字段首字母小写,则,在其它包不可以直接使用,我们可以提供一个方法
    func (s *students) GetScores() float64 {
        return s.scores
    }
    
    

    main.go

    package main
    
    import (
        "fmt"
        "go_demo/factory/model"
        )
    func main(){
        //通过工厂模式来解决
        var stu1 =model.NewStudent("tome~",98.7)
        fmt.Println(*stu1)
        //由于go编译器会对指针变量取值自动处理,(*stu1).Name 等价 stu1.Name
        fmt.Println("name=",(*stu1).Name)
        fmt.Println("score=",stu1.GetScores())
    }
    
    

    相关文章

      网友评论

          本文标题:go的工厂模式

          本文链接:https://www.haomeiwen.com/subject/nyatpctx.html