Указатели, указатель на время
Пример из книги
func main() {
var count1 *int
count2:= new(int)
countTemp:= 5
count3:= &countTemp
t:= &time.Time{}
fmt.Printf("count1: %#v\n", count1)
fmt.Printf("count2: %#v\n", count2)
fmt.Printf("count3: %#v\n", count3)
fmt.Printf("time: %#v\n", t)
}
На выходе получаем
count1: (*int)(nil)
count2: (*int)(0xc00000a0c8)
count3: (*int)(0xc00000a0e0)
time: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
Чем отличается указатель на countTemp от указателя на время, почему у времени мы получаем value
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
Для типа time.Time
определён метод GoString
Методы, определённые для конкретного типа, определены для указателя на этот тип. Следовательно, и тип time.Time
, и *time.Time
реализуют интерфейс fmt.GoStringer
В вашем случае спецификатор %#v
вызывает именно метод GoString
для указателя на Time