03 | 库源码文件
郝林
该思维导图由 AI 生成,仅供参考
你已经使用过 Go 语言编写了小命令(或者说微型程序)吗?
当你在编写“Hello, world”的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感。如果你对这一点点并不满足,别着急,跟着学,我肯定你也可以写出很厉害的程序。
我们在上一篇的文章中学到了命令源码文件的相关知识,那么除了命令源码文件,你还能用 Go 语言编写库源码文件。那么什么是库源码文件呢?
在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。
这里的“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。
那么程序实体是什么呢?在 Go 语言中,程序实体是变量、常量、函数、结构体和接口的统称。
我们总是会先声明(或者说定义)程序实体,然后再去使用。比如在上一篇的例子中,我们先定义了变量name,然后在main函数中调用fmt.Printf函数的时候用到了它。
再多说一点,程序实体的名字被统称为标识符。标识符可以是任何 Unicode 编码可以表示的字母字符、数字以及下划线“_”,但是其首字母不能是数字。
从规则上说,我们可以用中文作为变量的名字。但是,我觉得这种命名方式非常不好,自己也会在开发团队中明令禁止这种做法。作为一名合格的程序员,我们应该向着编写国际水准的程序无限逼近。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Go语言中命令源码文件和库源码文件的关系,以及如何进行代码拆分和组织。作者首先解释了库源码文件的概念,并通过示例演示了如何将命令源码文件中的代码拆分到其他库源码文件。文章重点讲解了代码包声明的基本规则,强调了同目录下的源码文件的代码包声明语句要一致。作者还提出了一个问题,引导读者思考如何修改代码以使其通过编译,并给出了修改后的代码示例。此外,文章还涉及了程序实体的访问权限规则和模块级私有的概念。总的来说,本文详细讨论了把代码从命令源码文件中拆分出来的方法,涉及了几条重要的Go语言基本编码规则,对于进行模块化编程的读者来说是一篇有价值的文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言核心 36 讲》,新⼈⾸单¥59
《Go 语言核心 36 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(82)
- 最新
- 精选
- daydayyiday置顶注意是核心36讲,不是三个月从入门到精通,建议可以先从教程预习一下https://tour.go-zh.org/welcome/1
作者回复: 好,你这个留言可以作为精选了:)。从零基础怎么一步步走我已经画好图了,择日发布。
2018-08-17458 - 婺华置顶我也觉得这种学习方式挺好,是新的尝试,因为对于有点基础的同学,总比去看太过基础的东西来的有效率,讲到点子上,也是不错的2018-08-166
- Dylan置顶讲得很到位呢,之前因为想看以太坊的源码,自己已经啃了一遍Go语言,现在回过头来在跟着老师学习,受益匪浅呀~
作者回复: 对大家有帮助就好!
2018-08-1515 - 松烽置顶可以先看看郝爷的Go并发编程,真不错,很体系2018-08-159
- dittolÖk还是不太适应这种学习方式
作者回复: 你好,具体说说怎么不适应呢?
2018-08-15761 - 云学go语言有些地方设计的太坑了,感觉没有审美观,首字母大写这个在其他语言是用来表示类型的,它偏要独树一帜,看来还是python的哲学好! 建议作者多给出一些最佳实践,不太习惯这种踩坑式教学,语言的第一感觉很重要,这些坑以附录的形式给出比较合适。
作者回复: 你好,每个语言几乎都有自己风格和编程哲学,学以致用最重要,一些细节不用太在意。
2018-08-15313 - 萧末可以通过包别名的方式解决冲突,如果导入的包不显式使用可以采用匿名的方式导入包
作者回复: 答得很好。
2018-08-157 - Realm1 导入包时,import的是相对src的相对文件路径,使用包内的函数时,其限定符是:包名.函数名(),压根与程序的文件名没有啥关系. 2 大写:Prubic;小写:private.
作者回复: 说得很多,源码文件名是代码包内部的细节,不对外暴露。
2018-08-157 - Erico.Len第一次接触go,虽然大学学过C,第一次看的很焖不知道联系 照着敲代码 看到报错后分析问题 疑问就会豁然开朗 建议以后可以举例一些实际项目中会关联的问题 ,通过这节课我觉得可以体会到以后搭建项目中包和目录以及程序实体之间的联系。比如MVC这个怎么布置会更合理一些 本人刚学意见不知道是否合理 望老师谅解
作者回复: MVC其实是一种设计模式组合,这在Java盛行的时代很流行。Java的很多Web框架都把这个组合模式实现了,然后提供完整的API给你。但是现在互联网尤其是移动互联网时代这就有些过时了,因为前端面向的端不只网页浏览器一个了,不适合再由写后端的人去搞了,所以前后端分离的做法开始流行起来,MVC这种前后端通吃的模式用的人就少了。建议你即使自己搞网站也不要用完整的MVC,这种模式现在看起来太重了,不太适合快节奏开发。
2018-08-165 - leo老师好,对于包管理的问题,之前会遇到cycle的问题,报错信息也很少,是否有什么定位方法?
作者回复: 你好,我记得现在go命令会报错的吧。
2018-08-155
收起评论