Почему я могу назвать забаву c из типа Go? - PullRequest
0 голосов
/ 13 марта 2020

Я учусь go, и во время "тура по Go" я нашел следующий фрагмент кода:

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.")
    }
}

Я хочу знать, что я делаю , поэтому я открыл документацию, касающуюся пакета "time".

При выполнении t := time.Now() согласно документации я получаю тип struct Time (https://golang.org/pkg/time/#Now), но затем , чтобы получить час мы делаем t.Hour(). Я бы понял, если бы t был экземпляром объекта Time, а Hour - методом этого объекта, но это не oop, а t - это тип, и я ожидал бы вызвать его как time.Hour(t), чтобы получить час.

Не могли бы вы немного рассказать о том, почему t.Hour() работает?

Спасибо! / Miguel

1 Ответ

7 голосов
/ 13 марта 2020

t не является типом, это переменная, содержащая значение структуры типа time.Time, возвращаемое функцией time.Now().

t.Hour() вызывает метод Time.Hour() с t приемник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...