duanre1891 2012-08-26 17:04
浏览 131
已采纳

golang:跨平台路径。

I'd like to use path.Dir() on Unix and Windows with a platform specific directory. Please take a look at the code:

package main

import (
    "fmt"
    "path"
)

func main() {
    fmt.Println(`path.Dir("a/b/c"): `, path.Dir("a/b/c"))
    fmt.Println(`path.Dir("c:\foo\bar.exe"): `, path.Dir(`c:\foo\bar.exe`))
}

This outputs

path.Dir("a/b/c"):  a/b
path.Dir("c:\foo\bar.exe"):  .

I'd like to get for the second call to path.Dir() (windows) something like

c:\foo

Is it possible to tell path.dir() to use Windows separators for my program running on windows? Or should I always convert the backslashes \ to forward slashes (/)? What is the preferred strategy here?

  • 写回答

1条回答 默认 最新

  • dragon4808 2012-08-26 17:46
    关注

    I see where the "problem" is. This discussion at golang-nuts gave me the hint, that path.Dir() always uses / and filepath.Dir() is the function to be used for platform dependent manipulation.

    package main
    
    import (
        "fmt"
        "path/filepath"
    )
    
    func main() {
        fmt.Println(`filepath.Dir("a/b/c"): `, filepath.Dir("a/b/c"))
        fmt.Println(`filepath.Dir("c:\foo\bar.exe"): `, filepath.Dir(`c:\foo\bar.exe`))
    }
    

    on windows:

    filepath.Dir("a/b/c"):  a\b
    filepath.Dir("c:\foo\bar.exe"):  c:\foo
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于作物生长模型下,有限水资源的最大化粮食产量的资源优化模型建立
  • ¥20 关于变压器的具体案例分析
  • ¥15 生成的QRCode圖片加上下載按鈕
  • ¥15 板材切割优化算法,数学建模,python,lingo
  • ¥15 科来模拟ARP欺骗困惑求解
  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式