崩潰,在 Linux 下用 Golang 寫了程序,想移到 Windows 下也能運行,但被目錄轉化搞得放棄

2018-10-27 20:55:40 +08:00
 zjsxwc

一會 C:\User 一會C:\\User 一會 C:/User

改得我腦門疼,水平有限,精力不夠最終還是放棄 Windows

5167 次点击
所在节点    程序员
42 条回复
flynaj
2018-10-27 21:13:17 +08:00
相对目录
zjsxwc
2018-10-27 21:15:54 +08:00
@flynaj 相對目錄也存在 `\\` `\` `/` 的區別。
serical
2018-10-27 21:18:25 +08:00
做成配置文件的方式,不同系统配置不同的
liaohongxing
2018-10-27 21:21:11 +08:00
一般跨平台语言都有提供 路径分隔符 标志 如 java 的 File.separator,php 的 DIRECTORY_SEPARATOR 常量 ,写跨平台程序路径肯定要用 这些 标志来拼接 ,否则肯定有路径问题。
loading
2018-10-27 21:22:10 +08:00
这个路径分隔符能在程序启动时获取存到一个常量里吧。
我忘了我这样处理的程序是 python 还是 golang 了。
flynaj
2018-10-27 21:22:34 +08:00
@serical 对程序里面根本不需要路径,写在配置文件,或者参数里面。
zjsxwc
2018-10-27 21:31:03 +08:00
@liaohongxing
@loading

這些只是其中之一的問題,我還要把涉及的自動生成的 shell 腳本轉化爲 bat 腳本,工作量有點大改了一晚上碰到各種坑,有幾個三方包里面還碰到用到不支持 windows 的 syscall,我剛開始還想把這些 syscall 改兼容,改了半天還是各種坑不斷出現,反正我放棄里!!!!
watzds
2018-10-27 21:34:27 +08:00
这和 go 没啥关系, `\\` `\` `/`其他语言也差不多,一个转义,两个不同分隔符
iwtbauh
2018-10-27 21:46:16 +08:00
@zjsxwc #7

msys2 了解一下?用 msys2 移植可以简化绝大部分的工作量

shell 脚本直接跑。

msys2 实现了 posix API (不要用 msys2 带的 mingw,那个没有 posix 支持)

包括 GTK+等程序都可以无痛移植
BBCCBB
2018-10-27 21:46:32 +08:00
filepath. ToSlash()
junjieyuanxiling
2018-10-27 21:55:04 +08:00
@loading Python 有 os.sep 。
kidlj
2018-10-27 23:40:18 +08:00
标准库里的 log/syslog 才牛逼,Windows 上怎么编译都报错 undefined,后来一查 stackoverflow,不支持 Windows。那你还放到标准库里?
Trim21
2018-10-28 02:06:29 +08:00
今天写 golang 用到 path.IsAbs,发现 Windows 下的路径怎么传结果都是 false,看了一眼源码,就判断了字符串第一个字符是不是“/”…
veightz
2018-10-28 02:15:12 +08:00
@Trim21 真是令人窒息的操作。。
zwh2698
2018-10-28 06:46:49 +08:00
路径前缀,你可以配置,也可以 api 获取,/ Windows 兼容所以不用改
zealzz
2018-10-28 06:55:11 +08:00
兄弟,join 方法了解一下了,既然语言做到了跨平台,就肯定会处理这些差异啊。手动拼路径是一件多么傻的是啊。
FaiChou
2018-10-28 08:40:22 +08:00
yulon
2018-10-28 08:56:40 +08:00
Go 不是有 filepath 包吗,任何语言在标准库支持处理路径的情况下都不要手写路径分隔符,JS 也是同理啊。。。
leyle
2018-10-28 09:52:58 +08:00
@Trim21 #13 这么骚操作?
mengzhuo
2018-10-28 10:21:52 +08:00
@Trim21 可以报 bug 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX