GO语言
-
Go工程师体系课 002
GOPATH 与 Go Modules 的区别 1. 概念 GOPATH 是 Go 的早期依赖管理机制。 所有的 Go 项目和依赖包必须放在 GOPATH 目录中(默认是 ~/go)。 一定要设置 GO111MODULE=off 项目路径必须按照 src/包名 的结构组织。 不支持版本控制,依赖管理需要手动处理(例如 go get)。 查找依赖包的顺序是 g…
-
Go工程师体系课 001
转型 想在短时间系统转到Go工程理由 提高CRUD,无自研框架经验 拔高技术深度,做专、做精需求的同学 进阶工程化,拥有良好开发规范和管理能力的 工程化的重要性 高级开的期望 良好的代码规范 深入底层原理 熟悉架构 熟悉k8s的基础架构 扩展知识广度,知识的深度,规范的开发体系 四个大的阶段 go语言基础 微服务开发的(电商项目实战) 自研微服务 自研然后重…
-
Go工程师体系课 protoc-gen-validate
protoc-gen-validate 简介与使用指南 ✅ 什么是 protoc-gen-validate protoc-gen-validate(简称 PGV)是一个 Protocol Buffers 插件,用于在生成的 Go 代码中添加结构体字段的验证逻辑。 它通过在 .proto 文件中添加 validate 规则,自动为每个字段生成验证代码,避免你手…
-
Go工程师体系课 protobuf_guide
Protocol Buffers 入门指南 1. 简介 Protocol Buffers(简称 protobuf)是 Google 开发的一种语言无关、平台无关、可扩展的结构化数据序列化机制。与 JSON、XML 等序列化方式相比,protobuf 更小、更快、更简单。 项目主页:https://github.com/protocolbuffers/prot…
-
Go资深工程师讲解(慕课) 008_GMP调度器与Go设计哲学
Go GMP 调度器与设计哲学 对应视频 9-2 go语言的调度器、18-1 体会Go语言的设计、18-2 课程总结 1. Go 调度器演进 1.0 时代:单线程调度器(Go 0.x) 只有一个线程运行 goroutine 所有 goroutine 排队等待 无法利用多核 1.1 时代:多线程调度器(Go 1.0) 引入多线程 但全局锁竞争严重,性能瓶颈 1…
-
Go资深工程师讲解(慕课) 007_godoc与代码生成
Go 文档生成与示例代码 对应视频 8-6 生成文档和示例代码 1. godoc 文档生成 Go 的文档直接从源码注释中提取,不需要特殊标记语法。 1.1 注释规范 // Package queue 实现了一个简单的 FIFO 队列。 // // 该队列基于切片实现,支持 Push、Pop 和 IsEmpty 操作。 package queue // Que…
-
Go资深工程师讲解(慕课) 006_函数式编程
Go 函数式编程 对应视频 Ch6(6-2 函数式编程例一),在 002.md 基础上扩展更多函数式编程模式 1. 回顾:Go 中函数是一等公民 Go 不是纯函数式语言,但函数可以作为:- 变量- 参数- 返回值- 存放在数据结构中 // 函数作为变量 var add = func(a, b int) int { return a + b } // 函数作为…
-
Go资深工程师讲解(慕课) 005
005 标准库 http 使用 http 客户端发送请求 使用 http.Client 控制请求头 使用 httputil 简化工作 package main import ( "fmt" "net/http" "net/http/httputil" ) func main() { resp, er…
-
Go资深工程师讲解(慕课) 004
004 goroutine package main import ( "fmt" "time" ) func main() { for i:=0;i<10;i++{ go func(i int) { fmt.Printf("Hello from goroutine %d \n",i) // …
-
Go资深工程师讲解(慕课) 003
003 测试 吐槽别人家的,go语言采用表格驱动测试 测试数据和测试逻辑混在一些 出错信息不明确 一旦一个数据出错测试全部结束 表格驱动测试 test:=[]struct{ a,b,c int32 }{ {1,2,3}, {0,2,0}, {0,0,0}, {0,0,0}, {-1,1,0}, {math.MaxInt32,1,math.MinInt32},…