Go/可选参数中的多个构造函数?

我想知道是否有一种方法可以在 Go 中实现多个构造函数(具有相同的函数名称),就像在 Java 中一样。另一种选择可能是只有一个带有可选参数的构造函数,但我不确定该怎么做。

type Query struct {

    TagsQuery string

    PageQuery string

}


// First Constructor

func NewQuery(TagsQuery string) Query {

    return Query{

        TagsQuery: TagsQuery,

        PageQuery: "0", // default to first page

    }

}


// Second Constructor

func NewQuery(TagsQuery string, PageQuery string) Query {

    return Query{

        TagsQuery: TagsQuery,

        PageQuery: PageQuery,

    }

}

第一个构造函数接受一个参数TagsQuery并默认PageQuery为0. 第二个构造函数有两个参数:TagsQuery和PageQuery。


烙印99
浏览 97回答 1
1回答

冉冉说

在您的情况下,您可以只为可选PageQuery字段执行此操作,因为它是一个...参数,它将来可以接受更多:type Query struct {    TagsQuery string    PageQuery string}// First Constructorfunc NewQuery(TagsQuery string, options ...Option) Query {    query := Query{        TagsQuery: TagsQuery,        PageQuery: "0", // default to first page    }    // Apply options if there are any, can overwrite default    for _, option := range options {        query = option(query)    }    return query}// Option definitiontype Option func(Query) Query// Function to create Option func to set pageQueryfunc WithPageQuery(pageQuery string) Option {    return func(query Query) Query {        query.PageQuery = pageQuery        return query    }}然后调用它:NewQuery("tags query only")NewQuery("tags query", WithPageQuery("page query"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go