go 的选项模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 的选项模式相关的知识,希望对你有一定的参考价值。

参考技术A 现在有个结构体如下定义:

我们需要初始化结构体,如果是其他语言,函数支持默认参数:

但是,go语言函数不支持默认参数,同时即使go语言支持默认参数,但是如果配置项过多,那么每一个配置项都得写一个默认参数,也不现实。
那么,在go语言中,我们怎么优雅的给其初始化呢,这时,就需要利用选项模式了(option)。

首先,我们定义一个option函数类型:

它接收一个参数: *Server 。
然后定义一个 NewServer 函数,它接收一个 Option类型的不定参数:

最后,再直接定义一系列返回 Option的函数

使用时,直接:

以上是关于go 的选项模式的主要内容,如果未能解决你的问题,请参考以下文章

Go语言函数式选项模式

Go - options模式(函数式选项模式)

Go语言实践模式 - 函数选项模式(Functional Options Pattern)

Go编程模式 - 5.函数式选项

[译]从其他语言调用Go函数

GO哥猜谜老司机们都来猜猜,沙2有几辆车?