转载: https://docs.hacknode.org/gopl-zh/ch2/ch2-05.html
package main
import (
"fmt"
)
// 声明一个表示摄氏温度的类型
type Celsius float64
// 使用该类型创建并且初始化一个变量
var c Celsius = 63.34
// 为该类型添加一个方法 目的是格式化打印这个值
// // func中的 (c Celsius) 类似于传入一个对于当前类型化的引用??? 然后就可以为当前类型添加方法了吗
func (c Celsius) String() string {return fmt.Sprintf("%g°C", c) }
func main() {
// 添加 String 方法之后 不管是 fmt.Println(c) 还是 直接调用c.String()
// 都会出现格式化打印的结果
// 许多类型都会定义一个String方法,因为当使用fmt包的打印方法时,将会优先使用该类型对应的String方法返回的结果打印
// 有点类似于 Python 中的魔法方法 __str__ 和 __repr__
fmt.Println(c)
ret := c.String()
fmt.Println(ret)
}
更新时间: 2019-11-23