调用命名类型的方法
在 Go 中,使用 type 关键字创建的命名类型与其基础类型不同。因此,属于底层类型的方法无法直接在命名类型上调用。
要解决此问题并使用其他方法扩展命名类型,同时保留其原始功能,可以采用嵌入技术。通过将基础类型匿名嵌入到命名类型中,嵌入类型的方法和字段将在命名类型中得到提升和访问。
例如,如果您有一个包装 time.Time 的命名类型 StartTime value:
type StartTime time.Time func (st *StartTime) UnmarshalJSON(b []byte) error {...}
要访问 StartTime 类型上的 time.Time 方法,请将 time.Time 匿名嵌入其中StartTime:
type StartTime struct { time.Time }
现在,您可以在 StartTime 上调用 Date() 等方法,就好像它们直接在类型上定义一样:
myStartTime.Date()
这种方法允许无缝扩展具有附加方法的命名类型,同时保留底层类型的原始功能。
以上是如何在 Go 中调用命名类型的底层类型方法?的详细内容。更多信息请关注PHP中文网其他相关文章!