美文网首页
go语言的工厂模式

go语言的工厂模式

作者: 梁帆 | 来源:发表于2021-03-13 00:00 被阅读0次

    有一工程如下:

    工程

    model包中的student.go源码:

    student.go

    student.go声明了一个Student的结构体,由于“Student”的首字母是大写的,因此也可以用在其他包中。下面是main包中用Student结构体的实例代码:

    main.go

    很显然,这是可以正常输出的。

    但是,如果model包中的结构体名字是小写的呢?

    就像这样:

    首字母小写的student

    首字母小写代表private,此时main包就没办法这样用了。如果实在要用的话,就得用到:

    工厂模式。

    如下图,model包中定义了一个函数,注意首字母是大写的,表示是public的,main包亦可调用此函数。

    工厂模式

    main包调用方式如下图所示:

    main包调用public函数

    这样就可以正常使用了。需要注意的是,这个public函数返回的是一个指针。

    这里又引出了一个问题:

    如果结构体中的变量名是小写字母开头的,那么main包中就无法用"结构体对象.变量"来正常输出了,该怎么解决这个问题呢?

    可以用方法来对外输出我们想要的变量:

    student的getScore()方法 stu.getScore()

    这里getScore()方法调用时出错了,因为方法名的首字母需要大写,main包才能使用。改完后如下图:

    stu.GetScore()

    这样才能正常使用,输出:

    输出

    相关文章

      网友评论

          本文标题:go语言的工厂模式

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