【go从零单排】File Paths文件路径

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

在 Go 中,处理文件路径通常使用 path/filepath 包。这个包提供了一系列的函数,用于操作和处理文件路径,特别是跨平台的路径操作。

💻代码

package mainimport (//path/filepath:提供了处理文件路径的函数,适用于不同操作系统。//strings:提供字符串处理功能。"fmt""path/filepath""strings"
)func main() {//使用 filepath.Join 将多个路径部分连接成一个完整路径。输出结果会根据操作系统的路径分隔符(如 / 或 \)自动调整。p := filepath.Join("dir1", "dir2", "filename")fmt.Println("p:", p)//处理多余的分隔符和相对路径。filepath.Join 会自动规范化路径。fmt.Println(filepath.Join("dir1//", "filename"))fmt.Println(filepath.Join("dir1/../dir1", "filename"))//filepath.Dir(p) 返回路径 p 的目录部分。fmt.Println("Dir(p):", filepath.Dir(p))//filepath.Base(p) 返回路径 p 的文件名部分。fmt.Println("Base(p):", filepath.Base(p))//filepath.IsAbs 检查路径是否是绝对路径。第一个示例返回 false(因为是相对路径),第二个示例返回 true(因为是绝对路径)。fmt.Println(filepath.IsAbs("dir/file"))fmt.Println(filepath.IsAbs("/dir/file"))filename := "config.json"//filepath.Ext(filename) 返回文件名的扩展名(.json)。ext := filepath.Ext(filename)fmt.Println(ext)//使用 strings.TrimSuffix 去除文件名的扩展名,输出结果为 config。fmt.Println(strings.TrimSuffix(filename, ext))//filepath.Rel 计算从第一个路径到第二个路径的相对路径。//返回 t/file,表示从 a/b 到 a/b/t/file 的相对路径。rel, err := filepath.Rel("a/b", "a/b/t/file")if err != nil {panic(err)}fmt.Println(rel)//计算从 a/b 到 a/c/t/file 的相对路径,返回的结果是 ../c/t/file,表示需要回到 a 目录,然后进入 c/t/file。rel, err = filepath.Rel("a/b", "a/c/t/file")if err != nil {panic(err)}fmt.Println(rel)
}

🔍理解

  • filepath.Join:将多个路径部分连接成一个完整路径。
  • filepath.Dir:返回路径的目录部分。
  • filepath.Base:返回路径的最后一部分(文件名)。
  • filepath.IsAbs:检查路径是否为绝对路径。
  • filepath.Ext:返回文件名的扩展名。
  • filepath.Rel:计算从一个路径到另一个路径的相对路径。

💡 Tips小知识点

跨平台:

  • path/filepath 包会根据操作系统自动选择适当的路径分隔符(如 Windows 的 \ 和 Unix 的 /),因此可以编写跨平台的代码。
  • 相对路径:在处理相对路径时,确保理解当前工作目录的位置,以避免路径解析错误。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

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

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

相关文章

【数据分享】中国渔业统计年鉴(1979-2024) pdf

数据介绍 一、《中国渔业统计年鉴》以正式出版年份标序。其统计数据起讫日期:渔民家庭收支调查起讫时间为 2022年11月1日至2023年10月31日,其他数据起讫时间为2023年1月1日至2023年12月31日。 二、统计数据中,远洋渔业数据按照远洋渔业管理办法进行统计…

Windows10“大限”将至或加速政企信创进程

近日,微软公司正式宣布将于2025年10月14日终止对Windows 10系统的支持服务。Windows 10“退休”在即,信息安全风险陡增——对此,360织语的安全专家认为,对于政企用户而言,不管是选择继续使用Windows 10,还是…

文本嵌入方案大总结:从词向量到句向量

这里写目录标题 文本嵌入方案总结一、文本嵌入三种层次 词向量应用: 句向量应用: 扩展:文本嵌入和句子相似度、文本匹配的逻辑关系? 二、词向量有哪些方案、优缺点、工具?方案一:统计编码方案二&…

第23天Linux下常用工具(二)

目录 第四章 GDB调试工具 4.1gdb的作用 4.2调试代码的流程 4.3gdb的安装 4.4 gdb的使用 第五章 makefile工程管理工具 5.1makefile的作用 5.2makefile的运行 5.3make的安装 5.4makefile的编写方法 5.5makefile的语法 5.6makefile使用示例 第四章 GDB调试工具 4.1g…

ubuntu22.04与ubuntu24.10使用Remmina远程桌面共享

1. ubuntu22.04启用远程桌面共享 点击Remote Desktop,按下图设置 成功启用 2.ubuntu24.10远程桌面启用 选择远程桌面选项 启用远程桌面共享与远程控制 启用远程登陆

基于51单片机的高压锅控制系统proteus仿真

地址: https://pan.baidu.com/s/16BuxmKYUprTGbkEj_BWGvQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

D3的竞品有哪些,D3的优势,D3和echarts的对比

D3 的竞品 ECharts: 简介: ECharts 是由百度公司开发的一款开源的 JavaScript 图表库,提供了丰富的图表类型和高度定制化的配置选项。特点: 易于使用,文档详尽,社区活跃,支持多种图表类型(如折线图、柱状图、饼图、散点…

2024年11月13日

1.创业法律指南 留置权和其他三个权 定金和订金 一般保证和连带保证 1.案例 物权编之担保法律制度案例一 冯系养鸡专业户,为改建鸡会和引进良种需资金20万元。冯向陈借款10万元,以自己的一套价值10万元的音响设备抵押,双方立有抵押字据&a…

从电动汽车到车载充电器:LM317LBDR2G 线性稳压器在汽车中的多场景应用

附上LM317系列选型: LM317BD2TG-TO-263 LM317BTG-TO-220 LM317BD2TR4G-TO-263 LM317D2TG-TO-263 LM317D2TR4G-TO-263 LM317TG-TO-220 LM317LBDR2G-SOP-8 LM317LDR2G-SOP-8 LM317MABDTG-TO-252 LM317MABDTRKG-TO-252 LM317MA…

健康之路三度冲击港交所,数字健康医疗平台IPO前景引关注

健康之路股份有限公司(HealthyWay Inc.)再次向港交所递交招股书,拟在主板上市。此前两次尝试未果,但公司用户基础坚实,业务覆盖广泛,包括健康医疗服务和企业服务及数字营销服务。股东阵容强大,营…

SpringCloud篇(配置中心 - Nacos)

目录 一、Nacos 配置中心 1. 统一配置管理 1.1. 在nacos中添加配置文件 1.2. 从微服务拉取配置 1.2.1. 引入nacos-config依赖 1.2.2. 添加bootstrap.yaml 1.2.3. 读取nacos配置 1.2.4. 页面访问 2. 配置热更新:两种 2.1. 方式一 2.2. 方式二 3. 配置共享…

vue2和vue3的区别详解

vue2 VS vue3 对比vue2vue3配置脚手架cmd命令行可视化方式创建脚⼿架组件通信props、$emit、provide、$arrts、EventBus等props、$emit、provide、inject、arrts等数据监听watch,computedwatch,watchEffect,computed双向绑定Object.definePropertyProxyAPI⽣命周期四个阶段befo…

高中数学:概率-相关运算性质

文章目录 一、概率定义二、运算性质三、事件相互独立四、频率与概率五、练习 一、概率定义 二、运算性质 基本性质 互斥事件的性质 对立事件性质 包含事件的性质 有交集但不包含的事件性质 三、事件相互独立 注意: 四、频率与概率 五、练习

我要学kali-linux之shell脚本编程1

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

概率密度与功率谱密度的理解与仿真

引言 概率密度(Probability Density)是统计学中十分重要的概念之一,其应用广泛;功率谱密度(power spectral density, PSD)则在电子电气行业用得比较多。 在基于雷达的目标检测中:概率密度和功率…

数据中台解决方案

文件是关于数据中台解决方案的详细介绍,内容涵盖了数据中台的定义、建设方案、实施步骤、以及在数字化转型中的作用。以下是对文件内容的分析和总结: 1. 数字化转型背景 国家政策支持:提到了《中华人民共和国国民经济和社会发展第十四个五年…

Spring Task详细讲解

✨Spring Task简介 Spring Task 是 Spring 提供的轻量级定时任务工具,也就意味着不需要再添加第三方依赖了,相比其他第三方类库更加方便易用。可以按照约定的时间自动执行某个代码逻辑。 使用场景: 信用卡每月还款提醒银行贷款每月还款提醒…

RabbitMQ运维

1. 单机多节点 1.1 搭建RabbitMQ ①安装RabbitMQ 略 ②确认RabbitMQ运⾏没问题 #查看RabbitMQ状态 rabbitmqctl status 节点名称: 端口号: 25672:Erlang分布式节点通信的默认端⼝, Erlang是RabbitMQ的底层通信协议.15672: Web管理界⾯的默认端⼝, 通过这个端⼝可以访问R…

AI 1.0公司的节节败退

商汤科技又裁员了,并不算行业新鲜事,新鲜的是,这次裁员发生在积极拥抱大模型之后。 成立于2014年的商汤科技,是2014—2015年的AI 1.0创业潮中拿到第一桶金的领头羊,并率先登陆资本市场,成为AI第一股。某种程…

图片识别为什么要将彩色图像灰度化?

为何在处理图像识别任务时,常需将彩色图像转换为灰度图像?在深入探讨此问题之前,我们首先需要明确“灰度化”的定义。 1、灰度化 灰度化处理,简而言之,是指将彩色图像转换成灰度图像的过程。 在电子显示设备&#xff…