内容简介:如上,最近看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) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与分析基础
Anany levitin / 潘彦 / 清华大学出版社 / 2007-1-1 / 49.00元
作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法都能进行准确分类,从而使本书的读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。 本书十分适合作为算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者......一起来看看 《算法设计与分析基础》 这本书的介绍吧!