栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go语言的相对路径问题

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go语言的相对路径问题

go语言同时支持“相对路径”和"绝对路径",但是在使用"相对路径"时候,会遇到一些令人意外的问题,所以接下来分别讨论两种使用"相对路径"的场景,并对规则进行总结
  • 在编译go项目时,比如go run、go build、go install,会需要给出源文件路径和生成的可执行二进制目标文件相对路径
  • 在go代码中想要创建或打开一个文件时,需要给出文件的相对路径
场景一

在执行命令时,如果给的是相对命令,则会在三个路径下查找文件(如果是整个项目,则对应到文件夹),以go build main.go(等价于go build ./main.go,)为例,会在下面三条路径下查找文件进行编译,如果找不到则报错。其他命令如go run、go install类似

  • pwd + /main.go
  • $GOROOT + /src +/main
  • $GOPATH + /src + /main
场景二

比如GO Web项目中,会包含配置文件、静态文件、模板文件等资源,我们会将其编译为可执行二进制文件,然后部署到远程服务器运行,所以不能使用绝对路径,只能使用相对路径
当运行该程序时候,会以该文件所在位置为起点(并不是以项目根路径为起点),根据相对路径下查找,所以将可执行二进制文件放在不同路径下或部署到远程服务器后可能会导致服务启动失败
当在Goland中运行或者调试项目时候,默认是以项目根路径为起点的,所以如果相对路径为以项目根路径为起点的相对路径,可以正常运行
解决方法:关于包“path/filepath”,这个包处理路径相关的兼容问题,提供了处理路径的一系列方法,但是不适用于Web场景下。这里的问题是因为编译后的二进制可执行文件不会包含资源,所以需要将资源复制到对应目录下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908920.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号