在Ruby中,我可以像bash
那樣直接捕獲字符串中的變量。在Go中的字符串字面量中捕獲變量?
SRCDIR = "aaa"
DSTDIR = "bbb"
puts "SRCDIR = #{SRCDIR}"
puts "DSTDIR = #{DSTDIR}"
這是一個簡單和微小的功能,但非常好讓它感覺像一個shell腳本。如果我必須編寫一個複雜的shell腳本,這會有很大幫助,因爲這消除了替換,連接和格式表達式的需要。
難道有這樣的事情嗎?如果有,如何使用它?
在Ruby中,我可以像bash
那樣直接捕獲字符串中的變量。在Go中的字符串字面量中捕獲變量?
SRCDIR = "aaa"
DSTDIR = "bbb"
puts "SRCDIR = #{SRCDIR}"
puts "DSTDIR = #{DSTDIR}"
這是一個簡單和微小的功能,但非常好讓它感覺像一個shell腳本。如果我必須編寫一個複雜的shell腳本,這會有很大幫助,因爲這消除了替換,連接和格式表達式的需要。
難道有這樣的事情嗎?如果有,如何使用它?
不是沒有格式化字符串;通常的方式做到這一點是fmt.Printf
或fmt.Sprintf
:
srcdir := "aaa"
dstdir := "bbb"
// separated out Sprintf and Println for clarity
fmt.Println(fmt.Sprintf("SRCDIR = %s", srcdir))
fmt.Println(fmt.Sprintf("DSTDIR = %s", dstdir))
// could be shortened if you're just printing them
fmt.Printf("SRCDIR = %s\n", srcdir)
fmt.Printf("DSTDIR = %s\n", dstdir)
另外值得注意的是,您可以在字符串中指定索引位置,而不是按照參數完全相同的順序進行格式化。例如 - 'fmt.Printf(「dstdir =%[2] s srcdir =%[1] s」,srcdir,dstdir)' –
韋斯說什麼。我應該補充一點,如果你使用的是自定義類型,你可能會定義一個方法,其簽名爲String() string
(基本上使它們滿足fmt.Stringer
接口),然後將這些類型的實例直接傳遞給fmt
包的函數,一個字符串,如fmt.Println()
。對此的簡單介紹可以在"Effective Go"中找到。
Go的目標不是成爲一種腳本語言。 – Agis
如果您希望生成參數化文本,請查看「文本/模板」包。 –