我想设置一个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