Go标准库按包组织,需导入后使用;常用功能集中在fmt、strings、strconv、time、os等包;自定义库须用go mod init初始化模块,包路径须含模块名且导出函数首字母大写。

Go 标准库不叫“函数库”,没有全局函数集合;所有功能都组织在包(package)里,必须导入后才能用 —— 直接调用 fmt.Println 这类不是“调用函数库”,而是调用 fmt 包导出的函数。
怎么找和用标准库里的常用功能?
Go 没有“常用函数清单”这种中心化文档,但高频需求集中在几个包:
-
fmt:格式化 I/O,fmt.Printf、fmt.Sscanf是解析字符串的主力 -
strings:字符串操作,strings.Split、strings.TrimSpace、strings.Contains用得最多 -
strconv:基础类型转换,strconv.Atoi、strconv.ParseFloat、strconv.FormatInt必须熟记错误返回模式(第二个返回值是error) -
time:时间处理,time.Now、time.Parse、time.Duration类型转换容易出错(比如10 * time.Second不能写成10 * 1e9) -
os和io/ioutil(Go 1.16+ 推荐用os.ReadFile/os.WriteFile):文件读写,注意路径分隔符统一用/,Go 自动适配 Windows
为什么 import "mylib" 报错 “cannot find module”?
Go Modules 要求自定义库也得是模块(module),不是放个 .go 文件就能 import。常见卡点:
- 项目根目录下没运行
go mod init myproject,导致 Go 不知道当前模块名 - 自定义包路径写错了:比如包在
./utils,却写import "utils"—— 正确写法是import "myproject/utils"(模块名 + 子路径) - 自定义包里没导出函数:函数名首字母小写(如
helper())无法被外部引用,必须大写(Helper()) - 包内没声明
package utils(与目录名一致),或声明了但文件名不是.go后缀
创建可复用的自定义库(非 main 包)的实际步骤
目标:写一个 uuid 工具包,提供生成随机 UUID 的函数,供其他项目 import。
立即学习“go语言免费学习笔记(深入)”;
Delphi 初级教程步步精通 pdf,简要概括一下内容:Delphi概述、Object Pascal语言基储三种结构的程序设计、数组、过程与函数、自定义类型、Delphi常用组件、多媒体应用编程、DLL的应用、数据库应用基储SQL数据库程序设计等。
操作顺序(终端执行):
- 新建目录:
mkdir myuuid && cd myuuid - 初始化模块:
go mod init github.com/you/myuuid(模块路径要能唯一标识,建议用 GitHub 地址) - 写源码:
echo 'package myuuid\n\nimport "math/rand"\n\nfunc New() string { return "uuid-" + rand.Int63s() }' > uuid.go - 测试它:
go test -v(先写简单测试,确认包能编译) - 发布前检查:
go list -f '{{.Name}}' .确认包名是myuuid,不是main
其他项目使用时:import "github.com/you/myuuid",然后调用 myuuid.New()。注意:如果本地开发调试,可用 replace 在 go.mod 中指向本地路径,避免反复 push。
标准库函数不是万能的,别硬套
比如想把 map 转 JSON,直接上 json.Marshal 没问题;但若 map key 是自定义 struct,会 panic —— 因为 JSON 只支持 string 作 key。又比如 time.Parse 的 layout 参数不是正则,而是用 Go 的一个具体时间("2006-01-02")做模板,写错一个数字就失败,且错误信息不提示哪位错了。这类细节不跑一遍根本记不住。









