gpt4 book ai didi

go - golang 中最灵活的函数签名

转载 作者:IT王子 更新时间:2023-10-29 01:55:47 26 4
gpt4 key购买 nike

<分区>

我的代码中有对象初始化程序,它显式初始化对象的每个字段。但就我而言,大多数参数都有合理的默认值,我想使用它们。

在 Python 中,我通常使用关键字参数或默认值的组合,并且我的 __init__ 方法包含一些验证逻辑,因此我可以在对象初始化中使用零配置原则。例如:

class Foo:
"""This class designed to show zero configuration
principle in action"""
def __init__(self, mandatory, optional=None, **kwargs):
self.__field1 = mandatory
self.__field2 = optional or make_default2()
if 'bar' in kwargs:
self.__field3 = kwargs['bar']
else:
self.__field3 = make_default3()


f = Foo('mondatory', bar=Bar())

Go 中没有带默认值的参数,也没有关键字参数或函数重载。因此 - 很难编写灵活的初始化代码(我通常不太关心此类代码的性能)。我想找到最惯用的方式在 Go 中编写此类代码。也许运行时类型反射和映射的某种组合可以完成这项工作,您怎么看?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com