Golang不同系统下写文件路径的区别
今天同事在搞一些运维的东西,发现代码很多东西写死了,在不
同环境上面跑出现错误
,然后我就联想到一个问题,windows和Linux的路径分层符是不一样的。windows用的是\
Linux用的是/
所以我们在代码中绝对不能写死路径
,要识别是什么系统,然后对应路径。
下面的代码就是很好解决不同环境的路径问题,需要注意的是windows是\\
,因为代码中\表示的是转移字符
package main
import (
"fmt"
"runtime"
)
func main() {
//runtime.GOARCH 返回当前的系统架构;runtime.GOOS 返回当前的操作系统。
sysType := runtime.GOOS
fmt.Println(runtime.GOARCH)
if sysType == "linux" {
// LINUX系统
fmt.Println("Linux system")
url := "./DockerVolumes/etcd"
fmt.Println(url)
}
if sysType == "windows" {
// windows系统
fmt.Println("Windows system")
url := ".\\DockerVolumes\\etcd"
fmt.Println(url)
}
}
更新!!!我测试了下,在我的windows环境下运行两种形式的路径都没有问题,不知道是不是内部帮我转换了,望大佬指正