2016-11-26 83 views
0

我想設置一個API在golang,對於特定的需求,我希望能夠有一個環境變量,將包含一個URL作爲字符串(即:「https://subdomain .api.com/版本/query「),我希望能夠修改API調用中的粗體部分。可變內部可以動態改變的字符串

我對如何實現這一目標毫無頭緒。

感謝您的時間,

保羅

+1

可能的重複:答案在這個問題:[Golang:格式字符串沒有打印?](http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing/31742265# 31742265) – icza

+0

好吧,我可能不夠詳細,但我的目標是建立一個函數,使我可以輕鬆地建立自定義URL並以一種理智/可讀的方式 – MEGADEVOPS

回答

1

的方法有很多,其中一個允許URL從環境中進行配置,然後有在運行時動態配置的URL,將使用模板。

你可以期望從一個ENV template:修改從文檔

apiUrlFromEnv := "https://{{.Subdomin}}.api.com/{{.Version}}/query" // get from env 

type API struct { 
    Subdomain string 
    Version string 
} 
api := API{"testapi", "1.1"} 
tmpl, err := template.New("api").Parse(apiUrlFromEnv) 
if err != nil { panic(err) } 
err = tmpl.Execute(os.Stdout, api) // write to buffer so you can get a string? 
if err != nil { panic(err) } 
0

最簡單的方法是使用fmt.Sprintf

fmt.Sprintf(format string, a ...interface{}) string

正如你看到這個函數返回一個新的格式化string這是內置庫。此外,您可以使用索引將參數放置在模板中:

在Printf,Sprintf和Fprintf中,缺省行爲是針對每個格式化動詞來格式化在調用中傳遞的連續參數。但是,動詞前面的記號[n]表示第n個單索引參數要被格式化。

fmt.Sprintf("%[2]d %[1]d %d[2]\n", 11, 22)

但是,如果你想使用命名變量,你應該使用text/template包。