我想設置一個API在golang
,對於特定的需求,我希望能夠有一個環境變量,將包含一個URL作爲字符串(即:「https://subdomain .api.com/版本/query「),我希望能夠修改API調用中的粗體部分。可變內部可以動態改變的字符串
我對如何實現這一目標毫無頭緒。
感謝您的時間,
保羅
我想設置一個API在golang
,對於特定的需求,我希望能夠有一個環境變量,將包含一個URL作爲字符串(即:「https://subdomain .api.com/版本/query「),我希望能夠修改API調用中的粗體部分。可變內部可以動態改變的字符串
我對如何實現這一目標毫無頭緒。
感謝您的時間,
保羅
的方法有很多,其中一個允許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) }
最簡單的方法是使用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
包。
可能的重複:答案在這個問題:[Golang:格式字符串沒有打印?](http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing/31742265# 31742265) – icza
好吧,我可能不夠詳細,但我的目標是建立一個函數,使我可以輕鬆地建立自定義URL並以一種理智/可讀的方式 – MEGADEVOPS