找回密码
 立即注册
首页 业界区 业界 go学习笔记:Go 语言中的 fmt.Sprintf的用法 ...

go学习笔记:Go 语言中的 fmt.Sprintf的用法

寨亳 2025-8-2 09:33:17
sprintf 是 C 语言中的字符串格式化函数,在 Go 语言中对应的是 fmt.Sprintf。以下是详细用法:
Go 语言中的 fmt.Sprintf

基本语法
  1. fmt.Sprintf(format string, a ...interface{}) string
复制代码
常用格式说明符

1. 字符串格式化
  1. name := "张三"
  2. age := 25
  3. result := fmt.Sprintf("姓名:%s,年龄:%d", name, age)
  4. // 输出:姓名:张三,年龄:25
复制代码
2. 数字格式化
  1. // 整数
  2. num := 42
  3. result := fmt.Sprintf("数字:%d", num)        // 十进制
  4. result = fmt.Sprintf("十六进制:%x", num)      // 小写十六进制
  5. result = fmt.Sprintf("十六进制:%X", num)      // 大写十六进制
  6. result = fmt.Sprintf("八进制:%o", num)        // 八进制
  7. result = fmt.Sprintf("二进制:%b", num)        // 二进制
  8. // 浮点数
  9. price := 123.456
  10. result = fmt.Sprintf("价格:%.2f", price)     // 保留2位小数
  11. result = fmt.Sprintf("价格:%f", price)       // 默认精度
  12. result = fmt.Sprintf("科学计数:%e", price)    // 科学计数法
复制代码
3. 宽度和精度控制
  1. num := 42
  2. result := fmt.Sprintf("右对齐:%5d", num)      // 宽度5,右对齐
  3. result = fmt.Sprintf("左对齐:%-5d", num)     // 宽度5,左对齐
  4. result = fmt.Sprintf("补零:%05d", num)       // 宽度5,用0填充
  5. price := 123.456
  6. result = fmt.Sprintf("价格:%8.2f", price)    // 宽度8,精度2
复制代码
4. 布尔值和指针
  1. flag := true
  2. result := fmt.Sprintf("状态:%t", flag)        // 布尔值
  3. ptr := &flag
  4. result = fmt.Sprintf("指针:%p", ptr)          // 指针地址
复制代码
5. 通用格式
  1. value := 42
  2. result := fmt.Sprintf("通用格式:%v", value)    // 默认格式
  3. result = fmt.Sprintf("详细格式:%+v", value)   // 详细格式
  4. result = fmt.Sprintf("类型信息:%T", value)    // 类型信息
复制代码
实际应用示例

1. 数据库连接字符串(你代码中的用法)
  1. dbHost := "localhost"
  2. dbPort := "3306"
  3. dbUser := "root"
  4. dbPass := "password"
  5. dbName := "testdb"
  6. dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
  7.     dbUser, dbPass, dbHost, dbPort, dbName)
  8. // 输出:root:password@tcp(localhost:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local
复制代码
2. 文件路径拼接
  1. basePath := "/home/user"
  2. filename := "data.txt"
  3. fullPath := fmt.Sprintf("%s/%s", basePath, filename)
复制代码
3. 日志格式化
  1. level := "INFO"
  2. message := "用户登录成功"
  3. timestamp := "2024-01-01 12:00:00"
  4. log := fmt.Sprintf("[%s] %s - %s", timestamp, level, message)
复制代码
4. 错误信息格式化
  1. err := errors.New("连接失败")
  2. result := fmt.Sprintf("操作失败:%v", err)
复制代码
常用格式说明符总结

说明符类型说明%sstring字符串%dint十进制整数%ffloat浮点数%tbool布尔值%ppointer指针%vinterface{}默认格式%+vinterface{}详细格式%Tinterface{}类型信息%xint十六进制(小写)%Xint十六进制(大写)%oint八进制%bint二进制注意事项


  • 参数顺序:格式说明符的顺序必须与参数顺序一致
  • 类型匹配:确保格式说明符与参数类型匹配
  • 性能:对于简单字符串拼接,+ 操作符可能比 fmt.Sprintf 更快
  • 错误处理:fmt.Sprintf 不会返回错误,但格式错误可能导致意外输出
这就是 fmt.Sprintf 的主要用法,它是 Go 语言中非常实用的字符串格式化工具!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册