os
Golang 标准库 - os
os 包提供了平台无关的操作系统功能接口。错误处理采用 Go 风格:如果操作失败,返回的错误值描述问题;如果操作成功,错误值为 nil。
主要功能说明:
-
文件操作:
Create()/Open()/OpenFile()打开文件Read()/Write()读写文件Close()关闭文件Remove()删除文件
-
目录操作:
Mkdir()/MkdirAll()创建目录Remove()/RemoveAll()删除目录Getwd()获取当前目录Chdir()切换目录
-
环境变量:
Getenv()获取环境变量Setenv()设置环境变量LookupEnv()查找环境变量Environ()获取所有环境变量
-
进程信息:
Getpid()获取进程IDGetppid()获取父进程IDGetuid()/Getgid()获取用户/组IDHostname()获取主机名
func main() {
// 1. 文件操作
fmt.Println("=== 文件操作 ===")
// 创建并写入文件
file, err := os.Create("test.txt")
if err != nil {
log.Fatal(err)
}
file.WriteString("Hello, Go!")
file.Close()
// 读取文件
content, err := os.ReadFile("test.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println("文件内容:", string(content))
// 删除文件
os.Remove("test.txt")
// 2. 目录操作
fmt.Println("\n=== 目录操作 ===")
// 创建目录
err = os.Mkdir("testdir", 0755)
if err != nil && !os.IsExist(err) {
log.Fatal(err)
}
// 获取当前目录
wd, _ := os.Getwd()
fmt.Println("当前目录:", wd)
// 读取目录内容
entries, _ := os.ReadDir(".")
for _, entry := range entries[:min(5, len(entries))] {
fmt.Println(" ", entry.Name(), entry.IsDir())
}
// 删除目录
os.Remove("testdir")
// 3. 环境变量
fmt.Println("\n=== 环境变量 ===")
// 获取环境变量
path := os.Getenv("PATH")
fmt.Println("PATH 长度:", len(path))
// 设置环境变量
os.Setenv("MY_VAR", "hello")
fmt.Println("MY_VAR:", os.Getenv("MY_VAR"))
// 4. 进程信息
fmt.Println("\n=== 进程信息 ===")
fmt.Println("进程ID:", os.Getpid())
fmt.Println("父进程ID:", os.Getppid())
hostname, _ := os.Hostname()
fmt.Println("主机名:", hostname)
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
🛒 站长推荐(京东联盟)
- 《Go 程序设计语言》(Go 语言圣经,机械工业出版社) —— Go 官方团队出品,公认入门第一书
- 《Go 语言实战》(异步图书,人民邮电出版社) —— 实战导向,面试前巩固工程手感
- 《Go 语言编程之旅:一起用 Go 做项目》(博文视点,电子工业出版社) —— 项目驱动入门,从零写出完整应用
- Keychron K1Max 矮轴机械键盘(Mac/Win 双系统,QMK/VIA 开源改键) —— 轻薄矮轴 + 开源固件,程序员桌面常客
- 罗技 MX Master 3S 无线鼠标(Flow 跨屏,静音电磁滚轮) —— 人体工学设计,写代码一整天手不酸
以上链接含京东联盟推广代码;通过链接购买本站可能获得少量佣金,不影响你的购买价格。
📮 关注公众号「GO语言入门之路」
每周更新 Go + AI 应用开发实战:AI 面试官完整项目、MCP、Agent 工程化,完整源码随文章首发。
微信扫码,或搜索「GO语言入门之路」关注,第一时间获取系列更新与源码,不再错过任何一篇。