【发布时间】:2018-05-21 21:11:51
【问题描述】:
我正在为学习制作联系申请。我有一个 NewContact()。
// Contact - defines the fields of an entire Contact
type Contact struct {
Title string
FirstName string
LastName string
HomePhone string
WorkPhone string
Mobile string
Address *Address
Email string
}
// NewContact - Creates a new contact
func NewContact(first string, last string) *Contact {
c := &Contact{}
c.FirstName = first
c.LastName = last
return c
}
但这确实有效....我可以要求 FirstName 和 LastName 但是我如何使所有其他字段参数可选?提前谢谢你。
【问题讨论】:
-
您可以将其设为可变参数函数,但调用者不清楚每个参数的作用,因为它将作为单个可变参数公开。除此之外,Go 中没有“可选”参数。
-
您的构造函数只是从参数中分配字段。为什么不只记录所需的内容而根本没有构造函数?
-
在这里查看一些技巧:Optional Parameters?
-
我可以拥有名字和姓氏等所需的信息,但它与联系人应用程序的灵活性有关。也许有人只有他们想快速加入的名字或姓氏和电话号码。提供选项,而不是强迫最终用户输入某些信息。
标签: go constructor variadic-functions optional-parameters optional-arguments