标准库核心包:fmt / strings / os / io / time
从 C++ 的 iostream / string / fstream / chrono 到 Go 标准库核心包 一、简述 Go 标准库是"开箱即用"的典范——网络、JSON、加密、压缩、时间、文件全都在标准库里。本笔记聚焦日常开发最高频的 5 个包:fmt(格式化)、strings(字符串)、os(文件/环境)、io(读写抽象)、time(时间)。 核心要点:这些包配合 Go 的"接口即抽象"哲学(io.Reader / io.Writer),形成了统一的数据流处理模型——你写的函数只需要面向接口,就能处理文件、内存、网络任何来源。 二、C++ 对照速查表 概念 C++ Go 关键差异 格式化输出 std::cout << x fmt.Println(x) Go 内置格式动词 格式化字符串 sprintf(buf, "%d", x) fmt.Sprintf("%d", x) 返回 string,无缓冲区 字符串操作 std::string / <cstring> strings 包 函数式,无成员方法 字符串拼接 s1 + s2 strings.Join / strings.Builder 大量拼接用 Builder 文件读取 std::ifstream os.Open + io.ReadAll 接口化 文件写入 std::ofstream os.WriteFile 一键写整个文件 时间获取 std::chrono::system_clock::now() time.Now() 返回 Time 结构体 休眠 std::this_thread::sleep_for time.Sleep 用法相似 计时 std::chrono::duration time.Since(t) 返回 Duration 三、fmt —— 格式化 3.1 输出函数 fmt.Print("a", "b") // 无换行、无空格: ab fmt.Println("a", "b") // 空格分隔 + 换行: a b fmt.Printf("%s %d", "go", 1) // 格式化: go 1 // 返回字符串版本 s := fmt.Sprintf("%s-%d", "v", 3) // "v-3" 3.2 常用格式动词 动词 含义 示例 %v 默认格式(任意类型) fmt.Printf("%v", 42) %+v 结构体带字段名 fmt.Printf("%+v", p) → {Name:tom Age:18} %#v Go 语法表示 fmt.Printf("%#v", p) → main.Person{Name:"tom"} %T 类型 fmt.Printf("%T", 42) → int %d 十进制整数 42 %x 十六进制 2a %f / %.2f 浮点 / 保留两位 3.14 / 3.14 %s 字符串 "hello" %q 带引号字符串 "hello" %t 布尔 true %p 指针地址 0xc0000b2000 3.3 对齐与宽度 fmt.Printf("%-10s|%10s\n", "left", "right") // left | right fmt.Printf("%05d\n", 42) // 00042(前导零) 四、strings —— 字符串处理 Go 的 string 是不可变值类型,所有操作都返回新字符串。 ...
豫公网安备41108202000982号