内容简介:如上,最近看grpc的源码,发现了里面一种高逼格的构造函数的写法,表示震惊,学到了新姿势。
package main import ( "fmt" ) type options struct { a int64 b string c map[int]string } func NewOption(opt ...ServerOption) *options { r := new(options) for _, o := range opt { o(r) } return r } type ServerOption func(*options) func WriteA(s int64) ServerOption { return func(o *options) { o.a = s } } func WriteB(s string) ServerOption { return func(o *options) { o.b = s } } func WriteC(s map[int]string) ServerOption { return func(o *options) { o.c = s } } func main() { opt1 := WriteA(int64(1)) opt2 := WriteB("test") opt3 := WriteC(make(map[int]string,0)) op := NewOption(opt1, opt2, opt3) fmt.Println(op.a, op.b, op.c) }
如上,最近看grpc的源码,发现了里面一种高逼格的构造函数的写法,表示震惊,学到了新姿势。
package main import ( "fmt" ) type options struct { a int64 b string c map[int]string } func (o *options) writeA(a int64) *options { o.a = a return o } func (o *options) writeB(b string) *options { o.b = b return o } func (o *options) writeC(c map[int]string) *options { o.c = c return o } func main() { op := new(options) op.writeA(int64(1)).writeB("test").writeC(make(map[int]string, 0)) fmt.Println(op.a, op.b, op.c) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript DOM编程艺术 (第2版)
[英] Jeremy Keith、[加] Jeffrey Sambells / 杨涛、王建桥、杨晓云 等 / 人民邮电出版社 / 2011-4 / 49.00元
JavaScript是Web开发中最重要的一门语言,它强大而优美。无论是桌面开发,还是移动应用。JavaScript都是必须掌握的技术。W3C的DOM标准是开发Web应用的基石。已经得到所有现代浏览器的支持,这使得跨平台Web开发成了一件轻松惬意的事。 本书是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习JavaScript和DOM开发的必读之作。 本......一起来看看 《JavaScript DOM编程艺术 (第2版)》 这本书的介绍吧!