-
安装Golang在macOS上可通过官方安装包或Homebrew完成,推荐初学者使用官方.pkg包,开发者使用Homebrew;安装后若“goversion”命令未找到,主因是PATH环境变量未正确配置,需将/usr/local/go/bin和$(goenvGOPATH)/bin加入~/.zshrc或~/.bash_profile并执行source命令生效;GOPATH现主要用于存放goinstall工具和模块缓存,不再强制作为项目目录,GOROOT通常无需手动设置;管理多版本Go可使用goenv,通过H
-
Go远程调试必须使用dlv,安装需用goinstall并验证权限与符号支持,macOS/WSL需特殊配置;远程调试须用dlvserve启动服务端,VSCode需用attach模式连接;构建时禁用优化(-N-l)以保留调试符号,且dlv与目标程序平台必须严格匹配。
-
expvar不是生产级监控方案,但它能快速暴露运行时关键指标,适合调试、压测和轻量级服务自检。expvar为什么默认只暴露/debug/vars?Go运行时把expvar注册到默认的http.DefaultServeMux,路径固定为/debug/vars。它不自动启动HTTP服务,也不监听端口——你得自己起一个http.Server,否则访问会404。常见错误现象:curlhttp://localhost:8080/debug/vars返回404,但代码里明明调了
-
Go中处理数据库错误需分三步:先用db.Ping()验证连接,再对每个Query/Exec等操作检查error,最后区分临时错误(如连接超时)与永久错误(如语法错误)并合理重试或返回。
-
Go的time.Timer是一次性定时器,复用前必须Stop()后再Reset(),且仅当Stop()返回true时才安全;否则应新建Timer或改用AfterFunc/Ticker。
-
统一安装Go至系统目录并配置全局环境变量,确保所有用户可读共享。通过设置GOROOT、PATH和共享GOPATH,结合组权限管理,实现多用户共用稳定Go环境。
-
压测需结合pprof定向分析才能暴露Go真实性能瓶颈:启用net/http/pprof,用hey等工具稳定压测30秒以上,采集CPU/堆profile,重点关注runtime.findrunnable(>15%提示goroutine失控)和sync.runtime_SemacquireMutex(提示锁争用),并调优GOGC、GOMAXPROCS及容器CPU限制。