| 12345678910111213141516171819202122232425262728293031 |
- package main
- import "fmt"
- // 1. 定义新类型
- type Celsius float64
- // 2. 实现 fmt.Stringer 接口(关键)
- func (c Celsius) String() string {
- return fmt.Sprintf("%.1f°C", c)
- }
- // 3. 额外示例:指针接收者方法,可修改自身
- func (c *Celsius) Add(delta float64) {
- *c += Celsius(delta)
- }
- func main() {
- // 值类型变量
- var roomTemp Celsius = 21
- fmt.Println("房间温度:", roomTemp) // 自动调用 String()
- // 指针类型变量
- freezer := new(Celsius) // *Celsius
- *freezer = -18
- fmt.Println("冷冻室:", freezer) // 同样调用 String()
- // 修改温度
- roomTemp.Add(3)
- fmt.Println("升温后:", roomTemp)
- }
|