请选择 进入手机版 | 继续访问电脑版

Go基于函数闭包实现函数可选项模式

[复制链接]
云韵 发表于 2020-12-31 18:11:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一般在调用函数时,遇到可选参数是非常广泛的。
在Go中可以使用函数闭包实现可选参数功能,最近在学习一些go写的包,看过源码,也都是采用这种方式,值得学习
 
  1. package mainimport (        "fmt")type Person struct {        name   string        age    int        gender string}// 界说options参数的范例,这里界说为一个函数type option func(*Person)// 通过withage函数去界说结构体的属性值func withage(age int) option {        return func(p *Person) {                p.age = age        }}func NewPerson(name string, gender string, opts ...option) *Person {        p := &Person{                name:   name,                gender: gender,                age:    10, // 默认设置age属性为10        }        for _, opt := range opts {                opt(p)        }        return p}func main() {        p := NewPerson("xiaoming", "男", withage(11)) // withage(11) 会将结构体对象的age设置为11,返回的函数对象也符合option的界说        fmt.Println(p)}
复制代码


来源:https://blog.csdn.net/xiaohuyi/article/details/111995107
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )