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

news2025/4/1 1:00:56

🔥 个人主页:星云爱编程

🔥 所属专栏: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    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
}

结语

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2322091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件上传绕过的小点总结(4)

9.末尾点删除处理缺陷 给出源码: $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA,…

如何用Spring AI构建MCP Client-Server架构

现代 Web 应用正加速与大语言模型(LLMs)深度融合,构建超越传统问答场景的智能解决方案。为突破模型知识边界,增强上下文理解能力,开发者普遍采用多源数据集成策略,将 LLM 与搜索引擎、数据库、文件系统等外部资源互联。然而,异构数据源的协议差异与格式壁垒,往往导致集…

如何让WordPress不同的页面、栏目显示不同的小工具侧边栏

WooSidebars 是一款用于 WordPress 的插件,主要功能是允许用户根据不同的上下文条件(如特定页面、博客文章、分类目录或搜索结果页面等)来更改侧边栏中显示的小工具。 自定义小工具区域:用户可以轻松创建自定义的小工具区域,并将其设置为在多种条件下显示,只需点击几次即…

智慧座椅的节能效果如何?

嘿呀,你知道不,咱这叁仟智慧座椅的节能效果,那可是像个神秘小宇宙,根据不同的技术和应用场景,会展现出超有趣的变化哦,下面就给你唠唠常见的几种情况哈! 能源回收大变身:有些叁仟智…

Matlab:二维绘图篇——不同坐标系下的绘图命令

目录 1.极坐标系下绘图:polar命令 实例——极坐标图形 实例——直角坐标与极坐标系图形 2.半对数坐标系下绘图:semilogx和semilogy 实例——半对数坐标系图形 3.双对数坐标系下绘图:loglog 实例——双对数坐标系绘图 4.双y轴坐标&…

对三维物体模型的阈值操作

对三维物体模型的阈值操作 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头2. point_normal_x、point_normal_y、point_normal_z有什么区别?3. 去除离群点 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头 dev_open_win…

prometheus 添加alertmanager添加dingtalk机器人告警

1、dingtalk创建机器人,目前我们采用加白名单的方式校验 2、定位到如下图 test结果如下

向量数据库学习笔记(1) —— 基础概念

一、 嵌入模型 Embedding Models 嵌入模型是将复杂数据(如文本、图像、音频等)转换为向量表示的机器学习模型 1. 核心概念 嵌入(Embedding):将高维、非结构化的数据映射到低维、稠密的向量空间 向量表示:输出固定长度的数值向量…

【算法】动态规划:回文子串问题、两个数组的dp

⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 回文子串问题回文子串最长回文子串分割回文串 IV分割回文串 II *最长回文子序列让字符串成为回文串的最少插入次数 两个数组的dp最…

文件上传绕过的小点总结(3)

6.文件首尾加空绕过 源码给出这样的,发现文件名处理没有首尾去空,于是我们可以采用首尾加空的方式绕过。 $file_name $_FILES[upload_file][name]; $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_e…

OpenHarmony 入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)

文章大纲 引言一、AppStorage 应用全局的UI状态存储1、StorageProp和StorageLink装饰器建立联系2、StorageProp2.1、StorageProp使用规则2.2、StorageProp变量的传递/访问规则2.3、StorageProp支持的观察变化2.4、StorageProp 值初始化和更新 3、StorageLink3.1、StorageLink使…

阿里云国际站代理商:物联网设备怎样就近接入计算节点?

配置边缘计算实例 登录边缘计算控制台,找到已创建的边缘实例,点击实例名称后的“查看”。 分配OPC UA驱动到边缘实例中,选择OPCUA驱动,点击“设备列表”后的“驱动配置”,在弹出对话框中点击“添加通道”,…

目录遍历漏洞复现

1.在fofa中输入语法,查询目录遍历 body"SKControlKLForJson.ashx" 查询结果为: 2.寻找目录遍历漏洞,访问网站: 3.我们可以app目录中下载文件等等 4.我们还可以访问其他目录的一些东西

Java高频面试之集合-18

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:HashMap 是线程安全的吗?多线程下会有什么问题? HashMap 的线程安全性分析 HashMap 不是线程安全…

系统思考—看见未来

感谢上海财经大学终身教育学院的持续邀请!每个月,都会带着不同的思维火花,走进财大与学员们一起探索系统思考的奥秘。 这次为宜宾市的干部们带来了一场深刻的学习体验。通过系统思考,帮助大家从整体视角去发现问题、分析问题、解…

保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版

介绍 目前,AI Agent智能体已经被许多公司广泛应用,同时智能体借助私有知识库的加成,使原来知识面并不特别充分的大模型更聪明。如今特别是在医疗,医药,政企等数据保密程度高的行业,部署自己的私有知识库更…

记一次线上程序宕机问题分析【写 GC 日志导致进程挂起】

1. 背景 运维侧持续反馈了几次线上业务程序 A 出现宕机告警的信息,重启后一段时间后又出现宕机,这里针对最后一次告警进行深入排查和分析。 首先这一次故障出现在 2024-03-14 04:18:23,和以往的宕机故障略有不同,以往的现象是切…

【leetcode hot 100 739】每日温度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…

Cookie、Session 与 Token:核心区别与应用场景解析

目录 引言 基础概念解析&#xff1a;三大身份验证技术详解 Cookie&#xff1a;浏览器中的"身份证" Session&#xff1a;服务器记忆的"对话" Token&#xff1a;加密的"通行证" 三种技术的深度对比分析 存储位置与数据流向 安全性全面对比…

状态空间模型解析 (State-Space Model, SS)

一、文章摘要 状态空间模型&#xff08;State-Space Model, SS&#xff09;是一种广泛应用于控制系统、信号处理和系统建模的数学表示方式。MATLAB 提供的 ss 类用于描述线性时不变&#xff08;LTI&#xff09;系统的状态空间表示。本类实现了 LTI 系统的构造、属性设置、变换…