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

网站首页制作教程视频多语言网站系统

网站首页制作教程视频,多语言网站系统,网站开发多钱,如何制作微信链接推广嗨#xff0c;大家好#xff01;本文是系列文章 Go 技巧第十三篇#xff0c;系列文章查看#xff1a;Go 语言技巧。 Go 中如何检查文件是否存在呢#xff1f; 如果你用的是 Python#xff0c;可通过标准库中 os.path.exists 函数实现。遗憾的是#xff0c;Go 标准库没有… 嗨大家好本文是系列文章 Go 技巧第十三篇系列文章查看Go 语言技巧。 Go 中如何检查文件是否存在呢 如果你用的是 Python可通过标准库中 os.path.exists 函数实现。遗憾的是Go 标准库没有提供这样直接的函数好在没有直接的却有不那么直接的。 本文将基于这个话题展开介绍 Go 中如何检查文件是否存在。 另外本文最后还会介绍一个小注意点即在判断文件是否存在时如何避免中潜在的竞态条件。 os.Stat 检查文件状态 Go 标准库虽然没有提供类似于 os.Exist 这样直接的函数检查文件是否存在但它提供另外一个函数 os.Stat。 os.Stat 函数的作用是获取文件状态信息我们通过检查它返回的错误即可知晓文件是否存在。 示例代码如下所示 func main() {_, err : os.Stat(/path/to/file)if err ! nil {if os.IsNotExist(err) {// 文件不存在} else {// 其他错误}}// 文件存在 }第一个返回值表示文件信息不是我们关心的重点直接省略掉。 第二个返回值表示错误 error。如果文件不存在可通过检查 os.IsNotExist 检查 error 是否是 os.ErrNotExist确定文件是否存在。 与 C 对比 上面的示例中我们使用 os.Stat 函数获取文件的状态通过 errors.Is 判断返回错误如果是 os.ErrNotExist则文件不存在。 不得不说这其实更底层更标准的做法。 类似于 Python 等高级语言提供 os.path.exist 主要是为了方便编程提高效率。 如果使用 Unix C 实现同样的功能示例代码如下 #include errno.h #include stdio.h #include sys/stat.hint main() {struct stat buffer;int exist stat(/path/to/file, buffer);if (exist ! 0) {if (errno ENOENT) { /* 文件不存在*/ } else { /* 其他错误 */ }return 0;}// 文件存在return 0; }是不是和我们前面代码基本是一个模子。 Go1.13 以及之后推荐使用 errors.Is 自 Go 1.13 起推荐使用 os.Stat 和 errors.Is 的组合。这种方法提供了更一致和灵活的错误处理方式。 具体而言即使是经过包裹的错误errors.Is 依然能够识别。 我期初认为os.IsNotExist 能识别包裹 error但不太确定于是写了个代码简单测试了下。 示例代码如下所示 _, err : os.Stat(/path/to/file) // 这是一个不存在的文件路径 werr : fmt.Errorf(Main: %w, err) // 包裹生成新错误 fmt.Println(os.IsNotExist(err)) // 返回 true表示不存在这是错误结果 fmt.Println(os.IsNotExist(werr)) // 返回 false表示存在 fmt.Println(errors.Is(werr, os.ErrNotExist)) // 返回 true 表示不存在测试结果都已写在注释中。 如上可知 os.IsNotExist 只能识别最初的 error如果错误经过 fmt.Errorf 包裹则必须使用 errors.Is 识别。 一句话概括os.IsNotExist 可以用但有适用范围而 errors.Is 则更通用。 这一般也同样适用于其他类似的库。 直接使用 Open 避免竞态条件 到这里基本已经解答了 Go 中如何检查文件存在性的问题。 但我还想引入一个讨论并发场景下如何避免检查文件存在性时引入潜在的竞态条件 简言之文件状态可能在检查和操作发生变化。 什么是更好的做法呢 我们可以直接尝试打开或操作文件根据返回结果判断错误。 示例代码如下 file, err : os.Open(/path/to/file) if err ! nil {if errors.Is(err, os.ErrNotExist) {// 文件不存在} else {// 处理其他类型的错误} }如上代码中你通过 open 直接打开一个文件如果文件不存在os.Open 将返回一个错误我们检查 error 确定下一步的操作。 通过这种方式我们可以避免打开文件时引入竞态条件。 open 是原子操作 读到这里可能有人不禁问为什么 open 能避免竞态条件呢它是原子操作吗 是的。 系统调用都是原子操作操作系统会保证操作过程不受到干扰。如果出现问题也会进行回滚操作. 这一点对于 Open 同样使用。 当我们使用 open 打开一个文件时系统会确保在这个操作完成前不会受其他操作干扰包括如检查文件是否存在、创建文件描述符、分配必要的资源等。 结论 本文通过一个小小的问题Go 语言中如何检查文件是否存在除了引出 Go 中检查文件是否存在的基本方法。同时还介绍了文件操作时如何避免潜在的竞态条件进一步了解到一个有趣的小知识Unix 系统调用是原子性操作。 最后还是希望本文能帮助各位在 GO 语言的学习道路上起到一点微末作用。 博客地址Go 中如何检查文件是否存在可能产生竞态条件
文章转载自:
http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn
http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn
http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn
http://www.morning.xjkfb.cn.gov.cn.xjkfb.cn
http://www.morning.ummpdl.cn.gov.cn.ummpdl.cn
http://www.morning.wskn.cn.gov.cn.wskn.cn
http://www.morning.ghpld.cn.gov.cn.ghpld.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.dbsch.cn.gov.cn.dbsch.cn
http://www.morning.ypfw.cn.gov.cn.ypfw.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn
http://www.morning.npqps.cn.gov.cn.npqps.cn
http://www.morning.rkdw.cn.gov.cn.rkdw.cn
http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn
http://www.morning.dbcw.cn.gov.cn.dbcw.cn
http://www.morning.zfyr.cn.gov.cn.zfyr.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn
http://www.morning.hydkd.cn.gov.cn.hydkd.cn
http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.caswellintl.com.gov.cn.caswellintl.com
http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn
http://www.morning.rjfr.cn.gov.cn.rjfr.cn
http://www.morning.xhftj.cn.gov.cn.xhftj.cn
http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn
http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn
http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn
http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn
http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn
http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn
http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn
http://www.morning.dygsz.cn.gov.cn.dygsz.cn
http://www.morning.mm27.cn.gov.cn.mm27.cn
http://www.morning.hhzdj.cn.gov.cn.hhzdj.cn
http://www.morning.stlgg.cn.gov.cn.stlgg.cn
http://www.morning.nxwk.cn.gov.cn.nxwk.cn
http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn
http://www.morning.lbxhy.cn.gov.cn.lbxhy.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.xphcg.cn.gov.cn.xphcg.cn
http://www.morning.zcyxq.cn.gov.cn.zcyxq.cn
http://www.morning.fplwz.cn.gov.cn.fplwz.cn
http://www.morning.xhklb.cn.gov.cn.xhklb.cn
http://www.morning.srky.cn.gov.cn.srky.cn
http://www.morning.ptwzy.cn.gov.cn.ptwzy.cn
http://www.morning.kmqms.cn.gov.cn.kmqms.cn
http://www.morning.prjns.cn.gov.cn.prjns.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.hsxkq.cn.gov.cn.hsxkq.cn
http://www.morning.fnwny.cn.gov.cn.fnwny.cn
http://www.morning.zhengdaotang.cn.gov.cn.zhengdaotang.cn
http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn
http://www.morning.hrzymy.com.gov.cn.hrzymy.com
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.bqts.cn.gov.cn.bqts.cn
http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn
http://www.morning.czzpm.cn.gov.cn.czzpm.cn
http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn
http://www.morning.qwlml.cn.gov.cn.qwlml.cn
http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn
http://www.morning.wgqtt.cn.gov.cn.wgqtt.cn
http://www.morning.1000sh.com.gov.cn.1000sh.com
http://www.morning.gcfg.cn.gov.cn.gcfg.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.gqwpl.cn.gov.cn.gqwpl.cn
http://www.morning.bqrd.cn.gov.cn.bqrd.cn
http://www.morning.bssjz.cn.gov.cn.bssjz.cn
http://www.morning.tnrdz.cn.gov.cn.tnrdz.cn
http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn
http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn
http://www.morning.xqwq.cn.gov.cn.xqwq.cn
http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn
http://www.morning.msfqt.cn.gov.cn.msfqt.cn
http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn
http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn
http://www.tj-hxxt.cn/news/249039.html

相关文章:

  • 江苏省城乡与建设厅网站织梦网站首页
  • 软件网站开发公司名字山东省工程建设招标信息网站
  • 国外的ui设计思想网站烟台企业做网站
  • 汕头中文建站模板淮北网站建设公司
  • 十堰做网站的深圳防疫今天最新规定
  • wordpress更新的文章编辑器不好用上海seo
  • 做网站p图工具郑州seo公司哪家好
  • wordpress多站点命名石家庄logo标志设计
  • 空间建设网站房山营销型网站建设
  • 建一个多用户团购网站需要多少钱pc手机模板网站建设
  • 做哪些网站流量最大最有创意的logo设计
  • 广州门户网站开发做网站的公司有
  • 微盟属于营销型手机网站wordpress 坐标
  • 有哪些网站做明星周边微网站建设要多少钱
  • 个人网页制作模板免费网站seo诊断分析报告
  • 用python做的大型网站黑客收徒网站建设
  • 正邦网站建设win优化大师
  • 中山企业网站建设方案广州建网站兴田德润信任
  • 做公益筹集项目的网站wordpress用什么数据库连接
  • 会计做帐模板网站点开文字进入网站是怎么做的
  • 校友会网站建设的目的用ps制作海报教程方法步骤
  • 网站建设年终总结怎么写惠州有做网站的吗
  • 社交网站建设教程顺企网下载安装
  • 编辑网站的软件手机软件唯尚广告联盟app下载
  • 做网站全屏尺寸是多少钱济南网站建设外包公司排名
  • 丹阳火车站片区规划郑州做网站远辰
  • 网站定制开发 团队义乌市住房和城乡建设局网站
  • 简单手机网站页游在线玩
  • 邢台网站优化服务平台wordpress在这个站点注册
  • 最大郑州网站建设公司建设企业网站有什么好处