当前位置: 首页 > news >正文

【Golang】补充:占位符、转义字符、错误处理

🔥 个人主页:星云爱编程

🔥 所属专栏:Golang

🌷追光的人,终会万丈光芒  

 🎉欢迎大家点赞👍评论📝收藏⭐文章

  

1、占位符

1.1通用占位符

  • %v :默认格式的值。适用于大多数类型。
  • %+v :打印结构体时包含字段名。
  • %#v :Go语法表示的值,通常用于调试。
  • %T :值的类型

1.2布尔值

  • %t :布尔值( true 或 false )

1.3整数

  • %b :二进制表示。
  • %d :十进制表示。
  • %o :八进制表示。
  • %x :十六进制表示(小写字母)。
  • %X :十六进制表示(大写字母)。

1.4. 浮点数

  • %f :默认宽度,默认精度。
  • %e :科学计数法(小写 e )。
  • %E :科学计数法(大写 E )。
  • %g :根据情况选择 %e 或 %f ,去除末尾的0。
  • %G :根据情况选择 %E 或 %f ,去除末尾的0。

洛谷P5714 【深基3.例7】肥胖问题

该例题可以用作%g联系

1.5字符串和字符切片

  • %s :字符串。
  • %q :带双引号的字符串,适合输出字符串字面量。
  • %x :十六进制表示(小写字母)。
  • %X :十六进制表示(大写字母)

1.6指针

  • %p :指针地址(十六进制表示)。

1.7宽度和精度控制

  • %[width].[precision]f :控制浮点数的宽度和精度。
  • %[width]s :控制字符串的宽度

2、转义字符

2.1常见转义字符

转义字符      含义
\n 换行符
\t制表符(Tab)
\\反斜杠
\"双引号
\'单引号
\r回车符
\b退格符
\f换页符
\a响铃符
\v垂直制表符

2.2注意事项

  • 转义字符必须用双引号( " )或反引号( ` )括起来。

  • 反引号( ` )中的字符串不会解析转义字符。

  • 在Go语言中,所有的转义字符都只算作一个字符,无论它们由多少个字符组成。

3、Go错误处理

Go语言中的错误处理主要通过返回 error 类型来实现,这是一种显式的错误处理机制。

3.1error类型

error 是一个内置接口类型,定义如下

type error interface {Error() string
}

任何实现了 Error() string 方法的类型都可以作为 error 使用。

3.2创建错误

  • 使用 errors.New 创建简单的错误:
err := errors.New("这是一个错误")
  • err := errors.New("这是一个错误"):
err := fmt.Errorf("错误:%s", "文件未找到")

3.3返回错误

函数通常将 error 作为最后一个返回值:

func Divide(a, b float64) (float64, error) {if b == 0 {return 0, errors.New("除数不能为零")}return a / b, nil
}

3.4处理错误

调用函数时,检查返回的 error :

result, err := Divide(10, 0)
if err != nil {fmt.Println("错误:", err)return
}
fmt.Println("结果:", result)

3.5 自定义错误类型

可以通过定义结构体实现自定义错误:

type MyError struct {Code    intMessage string
}func (e *MyError) Error() string {return fmt.Sprintf("错误代码:%d,错误信息:%s", e.Code, e.Message)
}func Process() error {return &MyError{Code: 404, Message: "资源未找到"}
}

 3.6错误检查

使用 errors.Is 和 errors.As 检查错误

if errors.Is(err, os.ErrNotExist) {fmt.Println("文件不存在")
}var myErr *MyError
if errors.As(err, &myErr) {fmt.Println("自定义错误:", myErr.Code, myErr.Message)
}

3.7案例

package mainimport ("errors""fmt""os"
)func main() {result, err := Divide(10, 0)if err != nil {fmt.Println("错误:", err)} else {fmt.Println("结果:", result)}data, err := ReadFile("test.txt")if err != nil {fmt.Println("错误:", err)} else {fmt.Println("文件内容:", string(data))}
}func Divide(a, b float64) (float64, error) {if b == 0 {return 0, errors.New("除数不能为零")}return a / b, nil
}func ReadFile(path string) ([]byte, error) {data, err := os.ReadFile(path)if err != nil {return nil, fmt.Errorf("读取文件失败:%w", err)}return data, nil
}

结语

感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!

路漫漫其修远兮,吾将上下而求索。


http://www.mrgr.cn/news/95837.html

相关文章:

  • Cucumber 专题系列 - 第三篇:编写第一个 Feature 文件
  • 轮回的起点与终点:一场跨越时空的哲学对话
  • 程序化广告行业(33/89):深入了解OTT、OTV及多样广告形式
  • 【精心整理】2025 DeepSeek 精品学习资料合集-共50份(教程+原理解读+行业应用+技术实践).zip
  • 36.评论日记
  • 【工程记录】QwQ-32b 8bit量化部署教程(vLLM | 缓解复读)
  • LVS的 NAT 模式实验
  • 性能测试笔记
  • Rust从入门到精通之精通篇:26.性能优化技术
  • VUE3项目VITE打包优化
  • UART转APB模块ModelSim仿真
  • deepseek实战教程-第六篇查找源码之仓库地址与deepseek-R1、deepseek-LLM仓库内容查看
  • 详解接口的常见请求方式
  • Nginx反向代理及负载均衡
  • 11_JavaScript_字符串方法+数学方法
  • 【简单学习】Prompt Engineering 提示词工程
  • 【C语言】动态内存管理
  • 鸿蒙学习笔记(2)-国际化配置、ArkTS简述
  • 快速搭建yolo测试环境,超简明的神经网络训练说明书
  • 【leetcode hot 100 35】搜索插入位置