有一工程如下:
工程model包中的student.go源码:
student.gostudent.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()这样才能正常使用,输出:
输出
网友评论