为什么要从Go中的类型调用func?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么要从Go中的类型调用func?相关的知识,希望对你有一定的参考价值。

我正在学习围棋,并且在进行“围棋之旅”时,发现了以下代码:

package main

import (
    "fmt"
    "time"
)

func main() 
    t := time.Now()
    switch 
    case t.Hour() < 12:
        fmt.Println("Good morning!")
    case t.Hour() < 17:
        fmt.Println("Good afternoon.")
    default:
        fmt.Println("Good evening.")
    


我想知道我在做什么,所以我打开了有关“时间”包的文档。

根据文档,在执行t := time.Now()时,我得到了类型struct Time(https://golang.org/pkg/time/#Now),但是,为了获得小时,我们执行了t.Hour()。我会理解,如果t是对象Time和Hour的实例,则是该对象的方法,但这不是oop,并且t是一种类型,我希望像time.Hour(t)这样调用它来获取小时。

您能给我一些t.Hour()为何起作用的信息吗?

谢谢!/米格尔

答案

t不是类型,它是一个持有类型time.Time的结构值的变量。 t.Hour()Time.Hour()接收器调用t方法。

以上是关于为什么要从Go中的类型调用func?的主要内容,如果未能解决你的问题,请参考以下文章

理解 Go 语言中的方法和接收者

为什么要从PHP转向Go,及满足于使用MySQL

Go 系列教程 —— 17. 方法

11.Go语言-接口

进行 go RPC 调用时,返回类型为 channel

GO学习之 函数和方法