Golang 从入门到放弃 -0x0A

package、module、go mod 和项目结构基础,开始把代码从单文件拆开。

前面几章我们一直在一个文件里折腾,是时候把视野拉大一点了。真正的 Go 项目不可能永远只有一个 main.go。这一章我们聊包、模块,以及项目该怎么别那么像一坨。

package 先认清

每个 Go 文件开头几乎都会先来一句 package xxx。它代表这个文件属于哪个包。

package main

package main 是一个特殊包,表示这是一个可执行程序的入口。里面如果再有一个 func main(),程序就能跑起来。

如果你写的是可复用的功能,就通常不会叫 main,而是按功能给个名字,比如 calcutilsservice

拆一个最简单的包

比如我们有这样一个项目结构:

demo/
├── go.mod
├── main.go
└── calc/
    └── add.go

calc/add.go

package calc

func Add(a, b int) int {
    return a + b
}

main.go

package main

import (
    "demo/calc"
    "fmt"
)

func main() {
    fmt.Println(calc.Add(3, 5))
}

注意那个大写的 Add。如果你把它写成小写 add,那就只能在 calc 包内部使用,包外看不到。这条规则我们在 0x04 提过一次,到这里就开始真正发挥作用了。

go mod 是什么

Go 现在的依赖管理核心就是 module。你可以理解成“这个项目自己的身份证加依赖清单”。初始化方式也很简单:

go mod init demo

执行后会生成一个 go.mod 文件,里面至少会写明模块名和 Go 版本。

module demo

go 1.24.2

模块名在本地玩具项目里随便一点问题不大,但一旦你准备把代码放到 GitHub 或公司仓库里,最好从一开始就按真实路径来,比如 github.com/yourname/demo

导入第三方包

如果你用到了外部依赖,Go 会在你第一次构建时自动拉下来,前提是你的网络和代理别太折腾人。

import "github.com/google/uuid"

写完以后跑一遍:

go mod tidy

这个命令非常值得记住,它会帮你整理依赖,把该加的加上,该删的删掉。很多 Go 项目出问题,第一反应先来一发 go mod tidy,经常能少骂半小时街。

项目结构别一上来就过度设计

刚学 Go 时,很多人特别容易走两个极端:

  • 所有代码全堆在 main.go
  • 刚写三百行,就拆出二十个目录,仿佛准备上市

我建议先克制一点。小项目结构简单些没问题,能看懂、能维护最重要。比如这样已经很够用了:

demo/
├── go.mod
├── main.go
├── handler/
├── service/
├── model/
└── config/

等业务复杂了,再慢慢细分,不要为了“像大厂项目”而提前给自己制造阅读成本。

小结

这一章的关键词其实就三个:

  • package:组织代码。
  • module:管理项目和依赖。
  • go mod tidy:你未来会很常敲的一条命令。

下一章我们聊 JSON 和文件 I/O。到那时,代码就开始更像一个正常服务,而不只是控制台玩具了。

Read more

Harness Engineering:从驾驭模型到构建 AI 工厂

Harness Engineering:从驾驭模型到构建 AI 工厂

2026 年,AI 编程工具的竞争焦点发生了根本性转变:决定 AI 助手好不好用的,不再是模型本身,而是包裹在模型外面的那层"Harness"。同一个模型,在不同的 Harness 下,性能差距可以达到 78% vs 42%。 这篇文章将带你深入了解 Harness Engineering——这个正在重新定义 AI 工程实践的新兴领域。 一、什么是 Harness Engineering? Harness 的字面意思是"马具/缰绳"——用来驾驭一匹强壮但不受控的马。在 AI 语境下,Harness 就是 LLM 之外的一切:工具定义、记忆系统、权限模型、反馈循环、文档规范、多

By Fuyu Jia

Claude Code CLI + Ralph:让 AI 自动完成大型编程任务的终极方案

TL;DR 当你的编程任务大到一个 AI 对话窗口装不下时,Ralph 会帮你把任务拆成小块,让 Claude Code CLI 一个接一个地自动完成——每轮都用全新的上下文窗口,不会越写越糊涂。 一、什么是 Ralph? Ralph 是一个开源项目(GitHub 16k+ Stars),基于 Geoffrey Huntley 提出的 "Ralph Pattern" 构建。它的核心理念很简单: 不要让 AI 在一个漫长的会话里做完所有事情,而是把大任务拆成小故事,每个故事用一个全新的 AI 实例来完成。 这解决了 AI 编程中最常见的痛点——上下文窗口耗尽。当对话越来越长,AI 的输出质量会明显下降。Ralph 通过「每轮一个新实例」的方式,

By Fuyu Jia