登录
首页 >  Golang >  Go问答

命名类型的调用方法

来源:Golang技术栈

时间:2023-04-28 16:49:38 182浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《命名类型的调用方法》,以下内容主要包含golang等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我有一个命名类型,我需要做一些 JSON 解组:

type StartTime time.Time
func (st *StartTime) UnmarshalJSON(b []byte) error {...}

既然StartTime是 a time.Time,我认为我可以调用属于 的方法time.Time,例如Date()

myStartTime.Date() // myStartTime.Date undefined (type my_package.StartTime has no field or method Date)

如何向现有类型添加方法,同时保留其原始方法?

正确答案

使用type关键字您正在创建一个新类型,因此它不会具有基础类型的方法。

使用嵌入:

type StartTime struct {
    time.Time
}

引用规范:结构类型

如果是表示该字段或方法的合法选择器,则结构中匿名字段的字段或方法 称为 提升f``x __x.f``f

所以嵌入(匿名)字段的所有方法和字段都被提升,可以被引用。

使用它的示例:

type StartTime struct {
    time.Time
}

func main() {
    s := StartTime{time.Now()}
    fmt.Println(s.Date())
}

输出(在Go Playground上试试):

2009 November 10

理论要掌握,实操不能落!以上关于《命名类型的调用方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表