🔥 个人主页:星云爱编程
🔥 所属专栏: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。
该例题可以用作%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 int
Message 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 main
import (
"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
}
结语
感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!
路漫漫其修远兮,吾将上下而求索。