请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于os.Args[0] 路径问题

老师,您好
使用 filepath.Abs(path.Dir(os.Args[0])) 不会转为代码的所在的路径

fmt.Println("os.Args[0]", os.Args[0]) 
// 输出 os.Args[0] /var/folders/jf/lbkrq49x5qx6str2jlgsxyk40000gn/T/go-build810378635/b001/exe/main


rootDir, _ := filepath.Abs(path.Dir(os.Args[0]))
fmt.Println("filepath.Abs(path.Dir(os.Args[0]))", rootDir)
// 输出 filepath.Abs(path.Dir(os.Args[0])) /var/folders/jf/lbkrq49x5qx6str2jlgsxyk40000gn/T/go-build810378635/b001/exe

运行的结果和视频不一样
图片描述

正在回答

1回答

你是先编译得到二进制包之后再执行的还是直接运行的go run main.go.如果直接运行go run main.go,最终编译生成的可执行文件就不会再当前项目的根目录,也就得不到预期的路径了
0 回复 有任何疑惑可以回复我~
  • 提问者 快乐源泉 #1
    是使用go run main.go运行的,视频里面也是使用go run 运行的,输出的结果,自动转换了路径
    回复 有任何疑惑可以回复我~ 2024-06-24 00:27:11
  • 少林码僧 回复 提问者 快乐源泉 #2
    目录结构一致吗?也是在root-dir下执行的go run cmd/root-dir/main.go吗?操作系统和go版本环境一致吗?
    回复 有任何疑惑可以回复我~ 2024-06-24 22:43:53
  • 提问者 快乐源泉 回复 少林码僧 #3
    回复 少林码僧
    苹果系统
    
    版本 go1.19.13
    
    go run cmd/root-dir/main.go
    os.Args: /var/folders/jf/lbkrq49x5qx6str2jlgsxyk40000gn/T/go-build3391389926/b001/exe/main
    rootDir: /var/folders/jf/lbkrq49x5qx6str2jlgsxyk40000gn/T/go-build3391389926/b001/exe
    回复 有任何疑惑可以回复我~ 2024-06-24 23:41:34

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信