-
GoogleProtocolBuffers(以下简称ProtoBuf)是一种轻量级、高效的数据序列化格式,被广泛应用于分布式系统中的数据传输和存储。而Go语言作为一种现代化的编程语言,对ProtoBuf的支持也非常友好,本文将介绍在Go语言中使用ProtoBuf进行数据序列化的方法。一、安装ProtoBuf在开始使用ProtoBuf之前,需要先安装它。可
-
简单二维码生成
Go 有一个 go-qrCode 库可以很简单的完成该项功能。首先需要下载该包。
go get github.com/skip2/go-qrcode
下载完之后就可以简单创建一个 Go项目。
func main(){
qrcode.WriteFile("新年快乐",
-
golang时间格式化
科普 CST 含义
CST: 中部标准时间 (Central Standard Time) 同时表示下面4个时区
CST Central Standard Time(USA) UT-6:00 CST Central Standard Time(Australia) UT 9:30 CST China Standard Time UT 8:00 CST Cuba Standard Time
-
前言
在golang中,只需要在函数调用前加上关键字go即可创建一个并发任务单元,而这个新建的任务会被放入队列中,等待调度器安排。相比系统的MB级别线程栈,goroutine的自定义栈只有2KB,这使
-
字符串拼接在 golang 里面其实有很多种实现。
实现方式
直接使用运算符
func BenchmarkAddStringWithOperator(b *testing.B) {
hello := "hello"
world := "world"
for i := 0; i &
-
日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper
viper读取ini文件
config := viper.New()
config.AddConfigPath("./conf/") // 文件所在目录
config.SetConfigName("b") /
-
channel
首先明确一下channel的作用:用于go协程间的通信。
go语言最大的特点就是支持高并发:goroutine和channel是支持高并发的重要组成部分。
单纯地将函数并发执行是没有意义的。函数与函数间
-
串行调用
在用go编写web/rpc服务器的时候,经常会出现需要对下游多 个/组 服务调用rpc(或者其他比较耗时的操作)的情况。按照自然的写法,比如对下游有ABC三个调用,串行顺着写,就总共要花费
-
Golang中实现路由分发可通过标准库net/http或第三方框架。使用http.ServeMux可注册路径处理器,支持基本匹配;手动解析URL可实现动态路由如/post/123;推荐使用Gin等框架,支持参数提取、正则约束与组路由;也可自定义简易路由器理解原理,通过方法+路径映射处理函数。项目中应根据复杂度选择方案,学习用标准库,生产用Gin或Echo。
-
答案:Go语言中通过接口与组合实现状态模式,定义State接口并由具体状态实现Handle方法,Context结构体持有当前状态并通过SetState安全切换,结合构造函数初始化及方法封装提升可维护性,适用于连接管理等场景。
-
go命令找不到的主因是PATH未配置,需确认Go安装路径(如/usr/local/go/bin)、将对应bin目录加入PATH、重载shell配置(如source~/.zshrc)并重启终端验证。
-
日志脱敏应在中间件层统一处理,而非业务逻辑层手动操作;推荐用结构体标签+反射方式,在zap.Object的MarshalLogObject中按redact:"true"标记脱敏字段,避免递归处理或命名猜测。
-
先运行测试生成覆盖率数据,再通过HTML报告查看覆盖情况。使用gotest-coverprofile=coverage.out生成数据,gotoolcover-html=coverage.out打开可视化界面,绿色为已覆盖,红色为未覆盖;结合表驱动测试确保边界条件被覆盖,提升代码质量。
-
Go语言不适合GUI开发,因其goroutine模型与GUI所需的单线程eventloop存在结构性冲突,导致UI卡顿;第三方库仅是补丁式方案,而Webview方案(如Wails、Tauri)才是当前可行路径。
-
goroutine中的panic不会传播到主goroutine,仅终止当前goroutine;必须在同goroutine中用defer+recover捕获,且recover仅在defer中有效;errgroup需手动recover并转为error;panic后状态可能不一致,recover仅为止损非回滚。