Golang函数式选项(Functional Options)模式

本文介绍了Golang中函数式选项模式的概念和优势,它用于解决动态配置参数的问题,避免了函数重载和配置对象的使用。文章通过示例展示了如何定义函数类型并返回设置User参数的函数,使得代码更简洁、易于维护和扩展。同时,讨论了该模式的适用场景,如基础服务配置。
摘要由CSDN通过智能技术生成

首发于微信公众号:【码农在新加坡】,欢迎关注。

个人博客网站: Golang函数式选项(Functional Options)模式

概览

最近阅读源码的时候看到一段不错的代码,但是当时却不是非常理解为什么这么写。
我们先来看一下源代码:

type User struct {
   
	ID     string
	Name   string
	Age    int
	Email  string
	Phone  string
	Gender string
}

type Option func(*User)

func WithAge(age int) Option {
   
	return func(u *User) {
   
		u.Age = age
	}
}

func WithEmail(email string) Option {
   
	return func(u *User) {
   
		u.Email = email
	}
}

func WithPhone(phone string) Option {
   
	return func(u *User) {
   
		u.Phone = phone
	}
}

func WithGender(gender string) Option {
   
	return func(u *User) {
   
		u.Gender = gender
	}
}

func NewUser(id string, name string, options ...func(*User)) (*User, error) {
   
	user := User{
   
		ID:     id,</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值