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

【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
}

结语

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

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

相关文章:

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

🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 1、占位符 1.1通用占位符 %v :默认格式的值。适…...

文件上传绕过的小点总结(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,…...

AI比人脑更强,因为被植入思维模型【23】损失规避思维模型

我觉得这是一个很有趣的思维模型。 我们学习一个思维模型,不光是指导自己的思维,其实也可以预测或者思考别人的思维模型,也就是别人会怎么想,怎么做? 定义 三层解释思维模型是一种深入剖析事物本质的思考框架&#x…...

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

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

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

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

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

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

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

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

HTTP 协议中请求与响应的详细解析

前言:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在互联网上传输超文本的协议 --由一个请求和响应组成,一个完整的 HTTP 请求由请求行(Request Line)、请求头(Headers&…...

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

对三维物体模型的阈值操作 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结果如下...

一些题目记录

别人面经题目记录 https://zhuanlan.zhihu.com/p/32626732052 实现 NMS,七八次,很高频; 实现 MultiHeadSelfAttention,大概 三四次; 用 Numpy 或者 List 实现MLP 的前向和反向,4次; Leetcode …...

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

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

Python学习第二十五天

Scrapy框架 官网概念 Scrapy 是一个强大的 Python 网络爬虫框架。 最新版本学习 安装 pip install scrapy 使用 # 创建名称为myscrapy的爬虫项目 scrapy starpoject myscrapy # 创建爬那个 就是比如 需要爬http://quotes.toscrape.com 运行的名称:toscrape运行…...

GitHub Copilot平替:CodeGeeX 2.0实测报告

本文基于20个真实开发场景对CodeGeeX 2.0进行深度评测,涵盖代码生成质量、上下文理解能力、多语言支持度等关键维度。通过Python数据分析、Java微服务、React前端开发三大核心场景的对比实验,揭示其相比GitHub Copilot在中文语境支持、本地化部署、隐私保…...

【算法】动态规划:回文子串问题、两个数组的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使…...

4. 如何减少大模型幻觉?⸺大模型外挂向量数据库的分析(知识延伸版)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 大模型幻觉 1.1 大模型幻觉的含义 1.2 大…...

【渗透测试】Fastjson 反序列化漏洞原理(二)

目录 反序列化漏洞结合 RMI 攻击详解一、RMI 和 JNDI 的基础知识(1) RMI 简介(2) JNDI 简介 二、漏洞利用的核心原理1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 加载并执行恶意代码 三、具体利用过程环境准备攻击步骤1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 部署恶意类…...

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

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

目录遍历漏洞复现

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

Java高频面试之集合-18

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

清晰易懂的 C 语言开发环境彻底卸载与清理教程

一、卸载前的关键理解 C 语言本身是编程语言,无法直接“卸载”,但开发环境通常包含: 编译器(如 GCC、Clang)构建工具(如 Make、CMake)IDE 集成(如 Visual Studio、Code::Blocks&am…...

系统思考—看见未来

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

嵌入式单片机程序的映像文件解读

映像文件类型 单片机下载程序的映像文件是包含了可执行代码、数据等信息,用于将程序烧录到单片机中的文件。常见的映像文件种类如下: 十六进制文件(Hex 文件) 格式特点:Hex 文件是一种文本格式的文件,以 ASCII 字符形式存储数据。它由一系列的记录组成,每条记录包含一个…...

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

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

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

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

position embedding

文章目录 1. 四种position embedding2. pytorch 源码[后续整理] 【因比较忙,后续整理】 1. 四种position embedding Position Embedding 1. Transformer 1.1 1d absolute 1.2 sin/cos constant 1.3 2. Vision Transformer 2.1 1d absolute 2.2 trainable 3. Swin T…...

【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…...

netplan是如何操控systemd-networkd的? 笔记250324

netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd&#xff1a; 工作原理&#xff1a;netplan读取位于/etc/netplan/目录下的YAML格式的配置文件&#xff0c;这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...