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

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表示,不建议带上类型名称。


http://www.kler.cn/a/548291.html

相关文章:

  • Spring Boot自动装配原理深度解析
  • 【Vue3源码解析】响应式原理
  • 训练与优化
  • Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究
  • Java常见排序算法及代码实现
  • Spring Boot全局异常处理终极指南:从青铜到王者的实战演进
  • C语言中的常量与只读变量,#define与const的区别
  • 从养殖场到科技前沿:YOLOv11+OpenCV精准计数鸡蛋与鸡
  • FPGA的星辰大海
  • AI与前端安全:效率提升与安全保障并行
  • csghub安装(docker方式)
  • nginx通过location配置代理的原理和方式
  • IDEA的程序调试笔记
  • flutter 状态栏不显示 问题解决办法
  • Rust编程语言入门教程(二)hello_world
  • 开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
  • Zookeeper(45) 如何在Zookeeper中删除节点?
  • 网络运维和网络安全哪个前景好?
  • Python数据可视化 - Matplotlib教程
  • Redis可视化连接工具RedisDesktopManager的下载与安装