douhuan1648 2014-06-19 00:46
浏览 17
已采纳

如何包装带有可变参数的函数

In Go, it's possible to prefix the final parameter in a function with the ... notation to indicate it is a variadic parameter.

template.ParseFiles is one such function:

func (t *Template) ParseFiles(filenames ...string) (*Template, error)

I am trying to create a function of my own which sets up various common features of my templates and I'd like the calling function to pass in the list of files that need to be parsed but I'm not sure how.

For example if my code looked like this:

type templateMap map[string]*template.Template
func (tmpl templateMap) AddTemplate(name string, files ...string) {
    tmpl[name] = template.Must(template.ParseFiles(files)).Delims("{@","@}")
}

I get an error:

cannot use files (type []string) as type string in function argument

How do I wrapper variadic parameters?

  • 写回答

1条回答 默认 最新

  • douliang7068 2014-06-19 00:50
    关注

    To pass a slice in place of the variadic argument of a function, simply suffix it with .... So in your example code, you would instead want:

    tmpl[name] = template.Must(template.ParseFiles(files...)).Delims("{@","@}")
    

    Here is a simple example of the concept: http://play.golang.org/p/TpYNxnAM_5

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序