当前位置: 首页 > 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 mainimport ("go-learn/lib/fastlog/log"slowlog "go-learn/lib/slowlog/log"
)func main() {println(log.LogLevel)println(slowlog.LogLevel)
}

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

相关文章:

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

说明:《Go语言精进之路》第一部分-熟知Go语言的一切,不在博客中做读书笔记了,大家可以自己读一读,每个人心里都会有自己对Go语言的认识和理解。 直接从第二部分-项目接口、代码风格与标识符命名开始 第二章目录如下 第5条 使用…...

Windows server 2016 无法部署docker问题

根据流程winserver16安装docker ee,发现服务器管理器的添加角色和功能-功能中没有 container 根据流程winserver16安装docker desktop,发现安装 hyper-v 报错 原因: 本人测试用windows server 2016使用vmware搭建,而vmware本身可…...

智能AI之隐私安全,尤其是医疗

前言 智能AI能更好的服务我们的生活,各行各业都将会有她的影子。我们在依赖她的情况下,我们的隐私安全吗? 前两天分享了用她分析CT拍片、还有一份血检报告单,回复的确实比有些医生都说的专业全面。以至于我都有冲动依赖她开…...

【hot100】054螺旋矩阵

一、思路 这个题目主要有两个问题,一是什么时候切换方向,二是如何切换方向 问题一:此步移动完后,判断下一个元素,如果大于等于边界值(从0开始)或者小于边界值时或者访问数组为真时 问题二&am…...

【Java学习】类和对象

目录 一、选择取块解 二、类变量 三、似复刻变量 四、类变量的指向对象 五、变量的解引用访问 1.new 类变量(参) 2.this(参) 3.类变量/似复刻变量. 六、代码块 七、复制变量的赋值顺序 八、访问限定符 1.private 2.default 九、导类 一、选择取块解 解引用都有可以…...

TestHubo基础教程-创建项目

TestHubo是一款国产开源一站式测试工具,涵盖功能测试、接口测试、性能测试,以及 Web 和 App 测试,可以满足不同类型项目的测试需求。本文将介绍如何快速创建第一个项目,以快速入门上手。 1、创建项目 在 TestHubo 中,…...

JS 链表

文章目录 链表题的一些总结两种链表定义set存储链表节点,存的是整个空间同时处理长短不一的两个链表处理方法 while(l1 || l2)处理方法 while(l1 & l2) dummyhead的使用 链表题的一些总结 两种链表定义 class class ListNode {val;next null;constructor(va…...

数据结构(陈越,何钦铭)第三讲 树(上)

3.1 树与数的表示 3.1.1 顺序查找 int SequentialSearch(List Tbl,ElementType K){int i;Tbl->Element[0]K;for(iTbl->Length;Tbl->Element[i]!K;i--);return i; } typedef struct LNode *List; struct LNode{ElementType Element[MAXSIZE];int Length; };3.1.2 二分…...

企业文件安全:零信任架构下的文件访问控制

在企业数字化转型的进程中,传统的文件访问控制模型已难以满足日益复杂的网络安全需求。零信任架构作为一种新兴的安全理念,为企业的文件安全访问提供了全新的解决方案。 一、传统文件访问控制的局限性 传统的文件访问控制主要基于网络边界,…...

性格测评小程序06用户注册校验

目录 1 必填校验2 验证密码强度3 账号唯一性校验最终效果总结 上一篇我们介绍了用户注册的功能,注册的时候对密码进行了加密。除了密码加密外还需要验证账号的唯一性和密码强度的问题,本篇我们介绍一下如何在表单提交的时候增加自定义校验的能力。 1 必填…...

$符(前端)

1‌. jQuery 的别名 用途&#xff1a;$ 是 jQuery 的核心标识符&#xff0c;用于快速选择 DOM 元素或调用 jQuery 方法。 // 选择所有 <div> 元素并隐藏 $(div).hide(); // 发起 AJAX 请求 $.get(/api/data, response > console.log(response)); 注意&#xff1a;虽然…...

Windows 11如何显示全部右键菜单?

在Windows 11系统中&#xff0c;默认的右键菜单进行了简化&#xff0c;若你想要显示全部右键菜单&#xff0c;可以通过以下几种方法实现&#xff1a; 方法一&#xff1a;临时显示完整右键菜单 在需要操作的区域按下Shift键的同时点击鼠标右键&#xff0c;此时弹出的就是完整的…...

离线量化算法和工具 --学习记录1

离线量化算法和工具 一、离线量化的基础概念1.1、基本流程1.2、量化的优点和缺点1.3、如何生产一个硬件能跑的量化模型1.4、PTQ的概念以及和QAT的区别1.5、离线量化的标准流程1.6、校准数据的选择1.7、量化模式的选择1.8、校准方式的选择1.9、量化算法的选择1.10、写入量化参数…...

python第七课

WSGI Middleware 中间件&#xff0c;可以理解称对应用程序的一组装饰器&#xff0c;对两边都起作用的元素。 重写environ&#xff0c;然后基于URL&#xff0c;将请求对象路由给不同的应用对象支持多个应用或者框架顺序地运行于同一个进程中通过转发请求和相应&#xff0c;支持负…...

华为IPD简介

创作灵感 现在“熟悉华为IPD”经常出现在高级招聘岗位能力要求上&#xff0c;于是作者写下此文章以此巩固相关知识储备 名词解释 华为IPD&#xff08;Integrated Product Development&#xff0c;集成产品开发&#xff09;是华为引入并优化的一套产品开发管理体系&#xff0…...

如何在Spring Boot中配置分布式配置中心

文章目录 如何在Spring Boot中配置分布式配置中心分布式配置中心的概念1. 集中管理2. 动态配置3. 环境隔离4. 安全性5. 可扩展性与适应性6. 与 CI/CD 流程的集成Spring Cloud Config 概述1. 集中式配置管理2. 多环境支持3. 版本控制4. 动态刷新5. 安全性6. 与微服务架构的无缝集…...

Golang internals

To be continued... time.Time golang的时区和神奇的time.Parse context.Context Go Context的踩坑经历 sync.Pool sync.Pool workflow in Go 1.12 new shared pools in Go 1.13 什么是cpu cache理解 Go 1.13 中 sync.Pool 的设计与实现Go: Understand the Design of Sync.Pool…...

天翼云910B部署DeepSeek蒸馏70B LLaMA模型实践总结

一、项目背景与目标 本文记录在天翼云昇腾910B服务器上部署DeepSeek 70B模型的全过程。该模型是基于LLaMA架构的知识蒸馏版本&#xff0c;模型大小约132GB。 1.1 硬件环境 - 服务器配置&#xff1a;天翼云910B服务器 - NPU&#xff1a;8昇腾910B (每卡64GB显存) - 系统内存&…...

数据治理常用的开源项目有哪些?

数据治理是企业在大数据时代中确保数据质量、安全性和可用性的关键环节。开源项目在数据治理中扮演着重要角色&#xff0c;提供了灵活、经济高效且功能强大的解决方案。以下是一些常用的开源数据治理项目&#xff1a; Apache Atlas&#xff1a; 功能&#xff1a;元数据管理、数…...

数据结构与算法之排序算法-(计数,桶,基数排序)

排序算法是数据结构与算法中最基本的算法之一&#xff0c;其作用就是将一些可以比较大小的数据进行有规律的排序&#xff0c;而想要实现这种排序就拥有很多种方法~ &#x1f4da; 非线性时间比较类&#xff1a; 那么我将通过几篇文章&#xff0c;将排序算法中各种算法细化的&a…...

避坑指南:STM32 TIM DMA Burst功能配置时,DCR寄存器这几个参数千万别设错

STM32 TIM DMA Burst配置实战&#xff1a;从波形异常到精准调试的避坑手册 调试实验室里&#xff0c;示波器屏幕上跳动的PWM波形本该是整齐的方波队列&#xff0c;此刻却呈现出频率飘忽、脉冲缺失的混乱状态——这是许多嵌入式工程师在使用STM32的TIM DMA Burst功能时常见的&qu…...

Alpine Linux容器镜像:网络调试与健康检查的轻量级解决方案

1. 项目概述&#xff1a;一个被“误解”的容器镜像最近在整理自己的容器镜像仓库时&#xff0c;又看到了cloudlinqed/clawless这个老朋友。说实话&#xff0c;第一次看到这个名字&#xff0c;很多人都会和我一样&#xff0c;下意识地联想到一些“特殊”的工具。毕竟&#xff0c…...

生产环境 JVM 参数实战计算指南

文章目录一、JVM内存配置四大核心铁律1. 预留系统内存&#xff0c;不占满物理内存2. 固定堆内存&#xff1a;Xms Xmx3. 新生代比例合理&#xff1a;约占堆内存1/34. 固定元空间大小二、通用标准化计算公式三、主流服务器一键生产配置1. 8G服务器&#xff08;测试/小型服务&…...

实用工具推荐 | SkillManager 一站式集中管理所有Skill 技能,支持 15 +款主流AI 编程工具(附下载地址)

你是不是也有这些烦恼&#xff1f;玩 Claude Code、Cursor、Codex、OpenCode、TRAE IDE时&#xff0c;由于每个工具都有自己的 Skills 配置目录&#xff0c;技能文件散落在各个目录&#xff1b;比如&#xff1a;~/.cursor/skills/~/.claude/skills/~/.opencode/skills/换电脑、…...

李辉《曾国藩日记》笔记:人人都狭隘,只是程度不一样!

李辉《曾国藩日记》笔记&#xff1a;人人都狭隘&#xff0c;只是程度不一样&#xff01;原文&#xff1a;同治元年九月十八日早饭后清理文件。旋见客&#xff0c;立见者十余次&#xff0c;坐见者两次。写沅弟信一件、左季高信一件。午刻万篪轩来久坐。中饭后阅本日文件。至幕府…...

EasyInstruct框架:模块化指令处理与高质量数据集构建实战

1. 项目概述&#xff1a;一个为大型语言模型设计的指令处理框架如果你正在研究或应用像GPT-4、LLaMA、ChatGLM这样的大型语言模型&#xff0c;并且经常需要处理指令生成、筛选和提示工程这些繁琐的任务&#xff0c;那么你很可能需要一个能帮你标准化这些流程的工具。EasyInstru…...

Hive JDBC vs MySQL JDBC:**“服务端推完就跑,客户端慢慢吃”**详解

一句话理解&#xff1a;MySQL服务端执行完查询后&#xff0c;会一次性把所有结果通过TCP流式推送给客户端&#xff0c;然后立刻解放资源&#xff08;推完就跑&#xff09;&#xff1b;客户端收到后本地慢慢消费&#xff08;慢慢吃&#xff09;&#xff0c;服务端完全不管客户端…...

00后下场整顿Agent:啥都不学就能用好AI,这才是正确打开方式

允中 发自 凹非寺量子位 | 公众号 QbitAIAI圈有个怪现象&#xff1a;模型越来越强&#xff0c;确实是好事&#xff1b;但随着AI用法越发多样&#xff0c;用起来的门槛却越来越高。ChatGPT、Gemini、Claude……即便这些模型的能力已经够强了&#xff0c;但真到上手干活的时候&am…...

从PasteJacker工具看剪贴板劫持:在Kali Linux上复现一次无害攻击(仅供学习)

从PasteJacker工具看剪贴板劫持&#xff1a;在Kali Linux上复现一次无害攻击&#xff08;仅供学习&#xff09; 剪贴板劫持作为一种隐蔽性极强的攻击手段&#xff0c;近年来在网络安全事件中频繁出现。这种攻击利用了用户对复制粘贴操作的天然信任&#xff0c;通过篡改剪贴板内…...

别再只会用机械按键了!手把手教你用STM32的TIM2输入捕获实现电容触摸按键(附完整代码)

基于STM32的电容触摸按键开发实战&#xff1a;从原理到抗干扰设计 在智能家居控制面板、工业HMI界面等场景中&#xff0c;传统机械按键存在易磨损、防水防尘性能差等痛点。而电容触摸技术通过非接触式检测&#xff0c;不仅能提升产品寿命&#xff0c;还能实现更简洁的外观设计。…...