2016-07-28 9 views
0

私はGolangでプログラムを作成しましたが、プログラムを起動するときに最初の引数としてファイルを使用しようとしています。 ./goprogram.exe C:\Acidic\image.png私のプログラムは、image.pngファイルへのリンクである必要がありos.Arg [1]変数を使用しようとするGolang os.Arg変数でバックスラッシュ ` 'を使用できません

は、それがバックスラッシュのいずれかなしで文字列を返します(たとえば

C:Acidicimage.png)。

文字をエスケープしないで文字列全体をどのように使用できますか?

私は少し例を作っています

package main 

import (
    "fmt" 
    "os" 
) 

func main() { 
    if len(os.Args) >= 2 { 
     fmt.Println(os.Args[1]) 
    } 
} 

私はgo run args.go C:\Users\image.pngを実行し、それが引用符の間の任意の引数を入れC:Usersimage.png

+0

http://i.imgur.com/nTwHekk.png Go1.6x64 Win10x64 –

+0

http://imgur.com/VwHquPW go1.6.3 windows/amd64 – Acidic

答えて

0

問題は、シェルのように見えます。ファイルパスを引用してみてください。

./goprogram.exe 'C:\Acidic\image.png' # prevents escape sequence execution 

(単一\年代付き)タイプC:\Acidic\image.png FO文字列が移動中に有効な文字列(無効なエスケープシーケンス\A、など)ではないとさえコンパイルされないでしょう。

+0

ああ、それは働いた。しかし、唯一の問題は、私のプログラムをWindowsの "open with"で使用しようとしていることと、引数に引用符を使用していないことです。 – Acidic

+0

実行ファイルのターゲットを変更することができます。そこに引用符を追加してみてください。 'exe'の' target'を変更するには、ショートカットを作成する必要があるかもしれないことに注意してください。 – abhink

+0

私はこれが唯一の選択肢であるかどうかを理解しています:/しかし、プログラム内でこれを解決する方法があれば良いでしょう。 – Acidic

0

を出力します

./goprogram.exe "C:\Acidic\image.png" 
+0

ああ、うまくいきました。しかし、唯一の問題は、私のプログラムをWindowsの "open with"で使用しようとしていることと、引数に引用符を使用していないことです。 – Acidic

関連する問題