惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
V
Visual Studio Blog
T
Tor Project blog
量子位
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
博客园 - 司徒正美
博客园_首页
罗磊的独立博客
美团技术团队
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
C
Check Point Blog
博客园 - 聂微东
爱范儿
爱范儿
Schneier on Security
Schneier on Security
T
Threat Research - Cisco Blogs
T
Tailwind CSS Blog
L
LINUX DO - 热门话题
大猫的无限游戏
大猫的无限游戏
V
Vulnerabilities – Threatpost
C
Cisco Blogs
GbyAI
GbyAI
Spread Privacy
Spread Privacy
博客园 - 叶小钗
博客园 - 【当耐特】
T
Tenable Blog
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
J
Java Code Geeks
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
Simon Willison's Weblog
Simon Willison's Weblog
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
腾讯CDC
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
Scott Helme
Scott Helme
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler

Go 编程语言

[工业边缘网关] EdgeX 更新啦 上线了官网 顺便更新版本 v0.10.0 - V2EX 有了 Agent,后台脚手架是该退场,还是变成约束层? - V2EX 强兼 Claude Code:左 DeepSeek V4,右 Kimi K3 - V2EX 构建时自动注入版本号:从 Git tag 到 Go 可执行文件 - V2EX [边缘计算] 想借助 AI 来开发 边缘网关接入 AI 解决设备通信 不知道有没有需求 - V2EX [Go]工业边缘计算网关 edgex 业余时间独立开发 持续更新半年咯 求个 star - V2EX eget:不用等中央仓库,直接安装 GitHub 和任意下载站的工具 - V2EX gookit/gcli v3.8:新增支持共享选项、文档生成和参数重排 - V2EX V2EX 我开源了一款极简的 P2P 文件传输与 VPN 工具 (Win/Mac/ Linux /Android) - V2EX gookit/gcli v3.5.0 发布 - 简单易用、功能丰富的 Go 命令行应用与工具库 - V2EX 用 Go gRPC 信令对接 Android WebRTC:大家一般怎么划分网关和客户端边界? 在服务端用 Pion + FFmpeg + RNN 做 WebRTC 通话降噪,值得吗? 这两种 lint 报错场景, v 友们一般怎么处理 - V2EX tikrok 的部分来时路 tikrok 第 7 代微服务重构: Golang 微服务 grpc 接口与服务实现隔离方案 写了个 Go 库:在 TCP 应用协议开始前做认证,也支持端口敲门 Tikrok v6.0 新的生产级架构,成本不变,但是部署复杂略有增加 go 打包的二进制程序怎么反编译 [边缘计算开源] 工业数据采集网关 版本更新 用 golang 写了,一套面向个人音乐资产的本地优先音乐系统 做了个 Go 的 MCP Server 框架,一行代码把 Gin API 接入 AI - V2EX 写了个 Go 库解决 LLM 流式输出断线重连的问题 - V2EX Tikrok v5.0 新的的底层实现 - V2EX OpenTelemetry 分布式追踪中的回溯采样:削减 60% 尾部采样成本 - V2EX 求推荐一个 go 里运行 js 的方案 - V2EX [边缘计算] 基于 GO 的采集网关持续更新啦 - V2EX [边缘计算开源] 基于 go 写了个独立运行的工业数据采集网关 后续阶段应该如何调整 - V2EX 然后 go-kratos 不怎么活跃了,连最火的 skills 都不搞, github 也没什么人回复了 - V2EX Excelize 开源基础库发布 2.10.1 版本更新 phper 转 go 最好的 web 框架是 goframe 吗? - V2EX A Visual Studio Code extension that displays the disk size of Go module dependencies in go.mod files. - V2EX miglite: Go 极简高效的数据库迁移工具 - V2EX 每秒万级 Tick 震荡:高频行情分发,该选 Golang 的并发原生还是 Rust 的极致性能? - V2EX 给 netcat 引入了 P2P 穿透、多路复用、强加密以及内置服务模块,并且完全开源 - V2EX 使用 "go.inlayHints.parameterNames": true 在 vscode 中开启类似 goland 的参数提示 - V2EX 下面代码中 f()会被重复执行吗?大佬帮忙解答一下~ - V2EX sublimetext 开发 GO 使用体验怎么样 - V2EX [开源] 将 react 的 hooks 和 组件化思路带入 go 的 TUI 开发。 - V2EX gocar 0.2.0 版本:新增自定义命令功能,实现真正的 go 的 cargo - V2EX go 新手,求问导入包失败问题 - V2EX 之前写的, JSR-310 风格的时间日期库, 1.0 了 - V2EX 为了方便学习 go, 使用 go 做了一个命令行版本的 go playground, 代码直接一键运行, 一键编译 - V2EX 虚心请教 Go 前辈们,关于入行 - V2EX 微信开发框架开源,基于 Go+Wails3+React - V2EX Golang 实现的开源 NVR 支持 GB28181 & ONVIF 啦 - V2EX Go 工具库 gookit/goutil v0.7.2 发布:增强功能与修复,提升开发体验 - V2EX go-carbon v2.6.15 正式版发布,已被 docker 官方组织使用 - V2EX 如何用 3–5 个高效问题快速识别 Golang 开发者的技术素养? - V2EX 有没有 go 的 ai 应用项目学习学习 - V2EX Go 环境版本管理用哪个- -有点疑惑 - V2EX Goland 下的通义千问不能选择模型,VScode 下面的通义千问可以选择模型 - V2EX 新手入门求指导 - V2EX 看 Go 的时间库不顺眼很久了,所以从别的语言里抄了一个 - V2EX go-dongle v1.2.0 发布,新增 SM2 非对称椭圆曲线加密算法支持 - V2EX Wails2+Vue3 本地的绑定文件和 Vite 上的不一致 - V2EX go 返回错误的时候, 返回的值应该可用吗 - V2EX Go 入门基础课(2025 Golang) - V2EX goland 中如何 debug wails - V2EX 日期函数获取上一个月 bug, 在一些特殊日子才出现,比如今天 10-31 - V2EX go-carbon v2.6.14 发布,一个轻量级、语义化的 golang 时间处理库 - V2EX goroutine 到底算不算一种 coroutine 的实现? - V2EX 为什么不用 gRPC-Go: VictoriaTraces 中实现 OTLP/gRPC 的幕后故事 - V2EX go 最新版的 map 并发读是安全的吗。 - V2EX 请问一下 golang 下有什么成熟稳定的串口通讯包? - V2EX golang.org/x/sync/syncmap 被 struct 裹挟时 使用前为什么必须为每个键初始化 不然取值得到 nil go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持 在开发接口的过程中,如何快速验证结果? - V2EX go-carbon v2.6.13 发布,一个轻量级、语义化的 golang 时间处理库
关于 Go 的工程经验 - V2EX
karashoukpan · 2025-12-03 · via Go 编程语言

这是一个创建于 193 天前的主题,其中的信息可能已经有所发展或是发生改变。

请教各位大佬,如果每人一句关于 Go 工程(不局限于 Web 或者基架项目)开发的经验,会是什么?

  • Go
  • 工程经验
  • 开发

    61 条回复    2025-12-08 15:27:18 +08:00

    wakarimasen

    4

    wakarimasen      2025 年 12 月 3 日

    泛型出现之前你可能需要熟练掌握编辑器快捷键,同时生成所有整数类型的比大小函数。

    wogogoing

    5

    wogogoing      2025 年 12 月 3 日 via iPhone

    尽可能不要忽略错误;组合机制很棒,好好利用起来。

    chengrui0428

    7

    chengrui0428      2025 年 12 月 3 日

    一个文件里,只使用一次 var 和 type 关键字

    w568w

    8

    w568w      2025 年 12 月 3 日

    业务逻辑不要害怕造轮子,协议标准不要自己造轮子

    开始开发前约定好规范,如「逻辑上可空的变量用 nil pointer 还是空值表示」「可选参数配置用 option pattern 还是 builder pattern 还是生成重载函数」

    Be stupid ,不要耍聪明省代码行数而写出费解的代码。Go 很冗长并且它就该冗长,冗长比晦涩好

    povsister

    9

    povsister      2025 年 12 月 3 日

    调用任何非标准库的函数前点进去看一眼实现,别盲目相信注释

    iseki

    10

    iseki      2025 年 12 月 3 日

    可以积极借鉴其它语言的标准库设计,特别是那些有丰富标准库经验的。

    5261

    11

    5261      2025 年 12 月 3 日

    @wangritian 哎,Java 开发写 go 项目,写着写着就变成 Java 结构和思想了,现在 go 项目中都加入了自动注入的概念了

    MIUIOS

    12

    MIUIOS      2025 年 12 月 4 日

    @5261 说明你完全没理解编程原理,自动注入和依赖反转从来不是 java 和 spring 的专属,这是概念级别的东西,不是语言层面的,是实际业务中繁衍出来的。

    nanwangnongfu

    15

    nanwangnongfu      2025 年 12 月 4 日

    每个 goroutine 都 defer recover

    brookegas

    16

    brookegas      2025 年 12 月 4 日

    开始用 Go 前,先清空 Java/Spring 的那一套便便思维💩

    hamwong

    17

    hamwong      2025 年 12 月 4 日

    有没有 web 后端最佳实践,自己写还是 java 思维

    spritecn

    18

    spritecn      2025 年 12 月 4 日

    @iseki 可以考虑把 apahe-common-langx 系列搬过来

    Desdemor

    19

    Desdemor      2025 年 12 月 4 日

    在对接接口需要加签验签频繁使用 json 序列化和反序列化的时候,浮点型尽量改为字符串。

    cmos

    21

    cmos      2025 年 12 月 4 日

    golang 的核心是让一万个人都能写出一模一样的代码

    asui

    22

    asui      2025 年 12 月 4 日

    走?

    Hopetree

    23

    Hopetree      2025 年 12 月 4 日

    主用 Python 的运维,Go 写命令行工具贼爽,监控插件也很爽

    bbao

    24

    bbao      2025 年 12 月 4 日

    不要过度设计,我们本没有多数据源设计,我们的一个大数据转后端的工程师,兼容了各大数据库,以及本可以渠道用户独立表+主表映射就可以,设计成了多库~~ 脑壳疼,那代码设计写的,一行都不想看。

    Desdemor

    25

    Desdemor      2025 年 12 月 4 日

    @jonty 16.0 你用 json 序列化再反序列化 获取的结果是不一样的,但是别人的加签可能是 16.0 你的加签是 16

    5261

    26

    5261      2025 年 12 月 4 日

    @MIUIOS 意思是这个意思, 我也知道 di 和 ioc 不是 java 和 spring 的专属,只是觉得写 go 会有 java 的味道

    baiic

    28

    baiic      2025 年 12 月 4 日

    写的业务多了,自然就会变成 java ,不要一味的贬低 java

    yifeng33

    29

    yifeng33      2025 年 12 月 4 日

    我要学 rust

    midsolo

    30

    midsolo      2025 年 12 月 4 日

    @bbao 说起过度设计,那我得展示一下了。

    多渠道的接入,建个 mapping 主表,然后每个渠道映射一张表就行了。

    但我司只会 Java 的架构师嫌我们设计的过于简单,只能自己出手了,各种高层次抽像,各种设计模式,好好的把个 Go 写的项目设计成了 Java 味儿。

    现在每个渠道建一个库,说是为了后续的扩展,提前做数据隔离,代码实现上写了 proxy 层、route 层、dispatch 层......

    CoderGeek

    31

    CoderGeek      2025 年 12 月 4 日   ❤️ 1

    规范好你的方法,区分好 “指针和引用” 我觉得很重要

    bwangel

    32

    bwangel      2025 年 12 月 4 日   ❤️ 3

    1. 多人团队中,别使用 go 启动 goroutine ,封装一个 Go 函数,在里面捕获 panic
    2. golang 中没有 thread local ,一个链路上传递数据,就使用 ctx ,千万不要整花活,https://github.com/timandy/routine 。性能会有问题,而且和很多三方库也兼容不了。
    3. 建议每个函数都加上 ctx 参数和 error 返回值,后面总会用到的

    gaffeyQiu

    33

    gaffeyQiu      2025 年 12 月 4 日   ❤️ 1

    提前做好分层设计, 避免做到一半发现循环依赖了

    shinonome

    34

    shinonome      2025 年 12 月 4 日   ❤️ 1

    到现在我都不知道 Ctx 用来传什么
    写的一个后端项目,感觉只用来停止

    Huelse

    35

    Huelse      2025 年 12 月 4 日

    怎么简单怎么来,不要想着一个东西实现复杂需求

    maocat

    36

    maocat      2025 年 12 月 4 日 via Android

    @gaffeyQiu #33
    golang 要循环依赖还挺难的吧,又不是 python

    nextvay

    38

    nextvay      2025 年 12 月 4 日

    别用面向对象的写法,new 一个 service ,然后初始化一坨。写 function 就好

    nextvay

    39

    nextvay      2025 年 12 月 4 日

    @shinonome 先加上。我们这原来是单租户,后来多租户,不同的数据库实例。没有这个 ctx ,需要先把传参都改造了,然后再改造多租户问题。 可以往 ctx 塞租户信息

    cmsyh29

    40

    cmsyh29      2025 年 12 月 4 日

    @shinonome 联路追踪 日志聚合 用户信息前置塞入 还有一些持久化上下游的值传递,比如用来区分环境等什么的

    karashoukpan

    42

    karashoukpan      2025 年 12 月 4 日

    @bbao 我觉得任何时候过渡设计都会导致灾难发生,像 Knuth's optimization principle 一样

    karashoukpan

    43

    karashoukpan      2025 年 12 月 4 日

    @w568w 学到了,我想可以在加一条,如果用 int 表示系统里面的状态,最好不要从 1 开始(或许可以延伸下,不要使用单位零值作为标志位,例如 0 和 false )

    这在数据库字段更新的时候得单独更新,gorm 的 Update 函数

    lance6716

    47

    lance6716      2025 年 12 月 4 日 via Android   ❤️ 1

    记得打开 net/pprof

    Aprdec

    48

    Aprdec      2025 年 12 月 4 日

    goframe 这框架好吗?看了文档直接看懵了,太多层了吧

    dog82

    50

    dog82      2025 年 12 月 5 日

    泛型用起来很爽,别人看起来想吐……

    guanzhangzhang

    52

    guanzhangzhang      2025 年 12 月 5 日

    即使写 web ,也要像非 web(cli ,网络,客户端)那样,处理每个 error ,千万不要偷懒
    如果是项目初期,那就要从现在起要求所有人提交代码都需要写单元测试
    每个人都要学会 dlv 和写代码的调试
    不要用 cgo

    bzj

    53

    bzj      2025 年 12 月 5 日

    最好别用 go 写 web 项目,网上的教程基本就是这种,都是 php 或者 java 程序员出的课程,看多了思想容易被污染

    gvison

    56

    gvison      2025 年 12 月 5 日   ❤️ 1

    可以试试 sponge ,这个项目把工程化做得比较极致。它主要是搞代码生成的(基于 SQL 或 Proto ),生成的代码直接遵循整洁架构。完全是 go 风格,它给出的是一套标准、模块化高、能直接落地的 Go Web/微服务 框架子。用来学习怎么组织大型 Go 项目,或者直接拿来一把梭开发都很合适。https://github.com/go-dev-frame/sponge

    longzhentian

    57

    longzhentian      2025 年 12 月 5 日

    @Aprdec 复杂感觉也还好,不过自动生成 service 和 dao 到算是方便的。我自己还是觉得 gin 好一些

    supuwoerc

    58

    supuwoerc      2025 年 12 月 5 日

    如果一点点复制或者硬编码就能解决问题,不要引入大量的抽象和封装。

    bzj

    59

    bzj      2025 年 12 月 5 日

    @ZekeRuan 转 go 当然是做 web3 ,学会了直接远程工作接到手软

    xsen

    60

    xsen      2025 年 12 月 6 日

    没啥不能写的,前后(包括最近一年)用 golang 做的产品、中间件涉及不限于
    web 、中间件、小工具、iot 、系统集成、ai ( onnx 做 intent 识别)、音视频( livekit )诸如此类
    还维护过一个简单的 workflow