go语言不像其他语言函数的参数可以设置默认值
以下是参考第三方库的写法
package main
import "fmt"
type User struct {
name string
age int
id int
}
type Option func(foo *User)
func WithName(name string) Option {
return func(foo *User) {
foo.name = name
}
}
func WithAge(age int) Option {
return func(foo *User) {
foo.age = age
}
}
func NewUser(id int, options ...Option) *User {
foo := &User{
name: "default",
age: 10,
id: id,
}
for _, option := range options {
option(foo)
}
return foo
}
func main(){
foo := NewUser(1, WithAge(15), WithName("张三"))
fmt.Println(foo)
}
输出
&{张三 15 1}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)