簡體   English   中英

去獲取目錄名作為參數

[英]Go obtain a directory name as an argument

從сyrillic獲取目錄名稱作為參數

如何獲得完整的路徑,而不是減少垃圾。 示例:作為程序參數的路徑/home/spouk/spouk.download/torrent/Сергей Лукьяненко, Собрание сочинений/

我進入程序的精簡版,該如何解決? /Home/spouk/spouk.download/torrent/Сергей

示例簡單代碼

package main

import (
    "flag"
    "fmt"
)

func main() {
    wordPtr := flag.String("path", "foo", "a string")
    flag.Parse()
    fmt.Printf("Flag: -path=`%v`\nflag.Args: %v\n", *wordPtr, flag.Args())
    fmt.Printf("Rune: %v\n", []rune(*wordPtr))
}

這與Go代碼無關,而是如何將其傳遞到程序中,請嘗試使用雙引號"…"傳遞路徑"…"

./main -path="/home/spouk/spouk.download/torrent/Сергей Лукьяненко, Собрание сочинений/"
> Flag: -path=`/home/spouk/spouk.download/torrent/Сергей Лукьяненко, Собрание сочинений/`
> flag.Args: []
> Rune: [47 104 111 109 101 47 115 112 111 117 107 47 115 112 111 117 107 46 100 111 119 110 108 111 97 100 47 116 111 114 114 101 110 116 47 1057 1077 1088 1075 1077 1081 32 1051 1091 1082 1100 1103 1085 1077 1085 1082 1086 44 32 1057 1086 1073 1088 1072 1085 1080 1077 32 1089 1086 1095 1080 1085 1077 1085 1080 1081 47]

這與Go無關。 這與西里爾字母無關。 這是shell解析命令行的方式。 它使用空格分隔參數。 將參數括在雙引號(“)中以進行覆蓋。例如,

package main

import (
    "flag"
    "fmt"
    "os"
)

func main() {
    fmt.Printf("os.Args:   %q\n", os.Args[1:])
    wordPtr := flag.String("path", "foo", "a string")
    flag.Parse()
    fmt.Printf("flag.path: %q\n", *wordPtr)
    fmt.Printf("flag.Args: %q\n", flag.Args())
}

輸出:

$ go run path.go -path=/home/spouk/Сергей Лукьяненко, Собрание сочинений/
os.Args:   ["-path=/home/spouk/Сергей" "Лукьяненко," "Собрание" "сочинений/"]
flag.path: "/home/spouk/Сергей"
flag.Args: ["Лукьяненко," "Собрание" "сочинений/"]

$ go run path.go -path="/home/spouk/Сергей Лукьяненко, Собрание сочинений/"
os.Args:   ["-path=/home/spouk/Сергей Лукьяненко, Собрание сочинений/"]
flag.path: "/home/spouk/Сергей Лукьяненко, Собрание сочинений/"
flag.Args: []

Bash參考手冊

3.1.2.3雙引號

用雙引號('“')引起來的字符保留引號內所有字符的字面值[有些例外]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM