Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
type Celsius float64
func (c Celsius) String() string { return fmt.Sprint(float64(c)) + "°C" }
func main() {
t := Celsius(21)
fmt.Println(t, float64(t))
}21°C 21
- Ждать
21 21: уCelsiusесть методString() string, значит, тип реализуетfmt.Stringer, иfmt.Printlnпечатаетtчерез этот метод. - Ждать
21°Cдважды:float64(t)— обычныйfloat64без методаString, поэтомуfmtпечатает голое число21.
- Зачем
Stringпереводитcвfloat64, прежде чем передать вfmt.Sprint? - Вызовет ли
fmt.PrintlnметодString, если у него будет получатель(c *Celsius)?