在扩展自定义类型时保留方法
在使用命名类型进行 JSON 解组时,您可能会遇到访问属于基础类型。例如,定义一个从 time.Time 派生的命名类型 StartTime,并尝试访问其 Date() 方法。
要克服此限制并向现有类型添加方法,同时保留其原始方法,嵌入现有类型。嵌入提供了一种将字段和方法从嵌入式匿名类型升级为新类型的便捷方法。
例如:
type StartTime struct { time.Time }
在此代码段中,我们匿名嵌入 time.Time 类型在开始时间内。根据 Go 结构体类型规范,匿名字段中的所有字段和方法都会被提升,并且可以直接从封闭类型访问。
现在,您可以无缝调用 Date() 和任何其他时间方法.Time 使用 StartTime 实例。这种方法允许您创建具有扩展功能的命名类型,同时保留基本类型的原始功能。
以上是如何在保留现有方法的同时扩展 Go 中的自定义类型?的详细内容。更多信息请关注PHP中文网其他相关文章!