os.Args[0] 的获取的值的问题

jerrychen · · 10736 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

默认情况下 os.Args[0]应该返回可执行文件的路径 ``` go package main import ( "fmt" "os" ) func main() { fmt.Println("test the os package") fmt.Println("Args len", len(os.Args)) for i, arg := range os.Args { fmt.Println("arg", i) fmt.Println("arg", arg) } fileInfo, err := os.Stat("E:\\go\\bin\\studygolang.exe") if err != nil { fmt.Println(err) } Date := fileInfo.ModTime().String() fmt.Println("Date", Date) } 输出 [ `go run testospackage.go` | done: 547.0313ms ] test the os package Args len 1 arg 0 arg C:\Users\ADMINI~1\AppData\Local\Temp\go-build951095955\command-line-arguments\_obj\exe\testospackage.exe Date 2015-05-11 16:08:36.641569 +0800 CST ``` 但是问题是我下载本站的代码,执行start.bat 后,总是提示 ``` go panic: GetFileAttributesEx E:\go\bin\studygolang: The system cannot find the file specified. ``` 代码定位到version.go ```go if Date == "" { fileInfo, err := os.Stat(os.Args[0]) if err != nil { panic(err) } Date = fileInfo.ModTime().String() } ``` 从os.Arg[0] 获取的是E:\go\bin\studygolang ;而不是E:\go\bin\studygolang.exe 请问是什么原因导致的,没有后缀名了 PS:自己手动修改fileInfo, err := os.Stat(os.Args[0] +".exe"), 然后再执行install.bat ,start.bat 就没有错误,可以http://127.0.0.1:8080/了

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

10736 次点击  
加入收藏 微博
5 回复  |  直到 2015-05-12 05:46:22
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传