美文网首页
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语言设计模式(2)工厂模式

    Go语言设计模式(2)工厂模式 工厂模式的定义 工厂模式的定义如下: Define an interface fo...

  • Go语言设计模式(3)抽象工厂模式

    Go语言设计模式(3)抽象工厂模式 抽象工厂模式的定义 抽象工厂模式的定义如下: Provide an inter...

  • go闭包和工厂模式

    先说工厂模式,工厂模式有3种:简单工厂模式;工厂方法模式;抽象工厂模式。 go语言中的闭包已经在上一节golang...

  • go语言工厂模式

    作者:HaigLeehttps://www.jianshu.com/u/67ec21fb270d本文由 HaigL...

  • go语言的工厂模式

    有一工程如下: model包中的student.go源码: student.go声明了一个Student的结构体,...

  • 设计模式——简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactoryMethod)模式,但不属于23种GO...

  • go的工厂模式

    说明 go的结构体没有构造函数,通常是用工厂模式来解决这个问题 使用工厂模式来解决跨包引的私有结构体的问题目录结构...

  • iOS开发之设计模式 - 工厂模式

    由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义...

  • Golang设计模式(工厂方法模式)

    工厂方法模式类图, abstract_factory_test.go car_factory.go motorbi...

  • go实现工厂模式

    面试常见题目,有时候可能让你手写一些,所以尽量做到快速手写实现。这个看起来很简单,也可能需要经常练习一下。

网友评论

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

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