当前位置: 首页 > news >正文

Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)

说明:《Go语言精进之路》第一部分-熟知Go语言的一切,不在博客中做读书笔记了,大家可以自己读一读,每个人心里都会有自己对Go语言的认识和理解。

直接从第二部分-项目接口、代码风格与标识符命名开始

第二章目录如下

  1. 第5条 使用公认且广泛使用的项目结构
  2. 第6条 提交前使用gofmt格式化代码
  3. 第7条 使用Go命名惯例对标识符进行命名

第5条重点

第5条重点描述了Go项目的结构,分别是二进制可执行文件的Go项目结构和只构建库的Go项目结构。

(1)二进制可执行文件的Go项目

LICENSE/README.md 都是常见的文件

Makefile是构建脚本

cmd目录:可执行文件对应的main包的源文件,有几个main包就对应几个可执行文件,cmd目录也可以改为app目录

go.mod/go.sum:Go语言依赖管理的配置文件,类似java中的maven或者gradle

pkg目录:项目自身依赖的一些库和包文件,pkg目录也可以改为lib目录

vendor目录:可选,早期Go中使用的依赖管理,目前构建使用go module

(2)只构建库的Go项目结构

更加简单,只有lib目录了

(3)internal目录

对于不想要暴露外部引用的包都可以新建internal目录后,放在internal目录下

第6条重点

学会使用gofmt格式化代码,使用下面命令查看gofmt命令的使用

第7条重点

包名采用小写的单个单词命名,比如zip,list等

包名可以不唯一,但是导入包的路径是唯一的,类似java中类名可以一样,全路径类型不一样就行

下图中展示了在golang中如果包名相同时,该如何使用,下图存在2个相同的包log,它们分别位于

/lib/fastlog/log和lib/slowlog/log。在main包中,如果要同时使用这2个包的话,我们需要像如下方式使用,使用slowlog显式包名指代slowlog下的log包

package main

import (
	"go-learn/lib/fastlog/log"
	slowlog "go-learn/lib/slowlog/log"
)

func main() {
	println(log.LogLevel)
	println(slowlog.LogLevel)
}

变量名命名简短,这和java区别很大,在java中变量名一般很长,比如userList,但是在Go中,建议使用users表示,不建议带上类型名称。

相关文章:

  • 案例-05.部门管理-新增
  • 数据大屏炫酷UI组件库:B端科技风格PSD资源集
  • RISC-V平台编译 state-thread x264 ffmpeg zlog
  • 分布式光纤传感:为生活编织“感知密网”
  • Node.js 中的 Event 模块详解
  • 【JavaEE进阶】Spring Boot日志
  • java断点调试(debug)
  • 人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
  • Spring Boot应用开发
  • C++:构造函数和析构函数
  • 机器学习--实现多元线性回归
  • 【重构谷粒商城】06:Maven快速入门教程
  • 【BUUCTF】[网鼎杯 2018]Comment
  • 通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!
  • 【股票数据API接口25】如何获取最近10天历史成交分布数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)
  • 智能设备监控:AI 与 Python 助力设备管理的未来
  • 【Linux】Ubuntu Linux 系统——Python集成开发环境
  • 非线性动力学笔C5.2线性系统的分类
  • React使用 useImperativeHandle 自定义暴露给父组件的实例方法(包括依赖)
  • 印观察|印巴战火与莫迪政府三重冒险:南亚火药桶已至临界点
  • 过半中国上市公司去年都在“扩编”,哪些公司人效最高
  • 马上评|比起奇葩论文,更可怕的是“水刊”灰产
  • 哈马斯官员:进一步停火谈判毫无意义
  • “五一”假期国内出游3.14亿人次,国内游客出游总花费1802.69亿元
  • 解锁川北底色密码,“文化三地”志愿宣讲员招募计划启动报名