Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
type Temp struct{ C int }
func (t *Temp) String() string { return fmt.Sprintf("%d°C", t.C) }
func main() {
t := Temp{C: 21}
fmt.Println(t, &t)
}{21} 21°C
- Ждать
21°C 21°C: уStringполучатель-указатель, поэтомуfmt.Stringerреализует только*Temp, а значениеtпечатается как поля. - Ждать, что указатель напечатается как
&{21}: у&tтип*Temp, у него есть методString, иfmtпечатает21°C.
- Как изменить метод, чтобы и
fmt.Println(t)печатал21°C? - Почему
t.String()у переменнойtвызвать можно, аfmt.Stringerона при этом не реализует?