Go最全Go:strings(3),Golang开发核心知识笔记共2100页

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取


该函数返回`substr`在`s`中最后出现位置的索引,如果`s`中不包含`substr`,则返回-1。这个函数在处理文件路径时尤其有用,因为它可以帮助我们找到路径中最后一个分隔符的位置,从而轻松地分离出目录路径和文件名。


##### 示例解析:确保数据库文件的父目录存在


现在,让我们来分析文章开始提供的函数`checkCreateDbFile`,这个函数的目的是确保给定的数据库文件路径的父目录存在。如果父目录不存在,函数将创建它。



func checkCreateDbFile(file string) error {
// 获取文件夹路径
dir := file[:strings.LastIndex(file, “/”)]
// 判断文件夹是否存在
if _, err := os.Stat(dir); os.IsNotExist(err) {
// 创建文件夹
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
logrus.Errorf(“create db file dir error: %v”, err)
return err
}
}
return nil
}


关键点分析:


1. **使用`strings.LastIndex`提取目录路径**:通过`strings.LastIndex(file, "/")`找到路径中最后一个`/`的位置,然后通过切片操作`file[:index]`提取出目录路径。这种方法简洁高效,无需引入额外的路径处理库。
2. **目录存在性检查**:通过`os.Stat`函数检查目录是否存在。需要注意的是,原代码中的条件判断存在逻辑错误,正确的方式应该是使用`os.IsNotExist(err)`来判断`dir`是否存在,而不是`os.ErrExist == err`。
3. **目录创建**:如果父目录不存在,通过`os.MkdirAll`函数创建目录及其所有父级目录,权限设置为`os.ModePerm`,这样确保了目录是可访问的。


##### 小结



![img](https://img-blog.csdnimg.cn/img_convert/16b06ac2e28717627db0d53ca8be9a96.png)
![img](https://img-blog.csdnimg.cn/img_convert/f1913bf2396391bd8855f582d088d2d4.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值