引用

像其他语言都有对应的函数可以打印对象的描述
比如Java中的String(),Python中str()
Golang 中是否有对应的用法呢
答案是有的

说明

在Golang中,类只要实现了String(),在执行format时,就会自动调用这个方法。

If an operand implements method String() string, that method >will be invoked to convert the object to a string, which will then >be formatted as required by the verb (if any).

For compound operands such as slices and structs, the format applies to the elements of each operand, recursively, not to the operand as a whole. Thus %q will quote each element of a slice of strings, and %6.2f will control formatting for each element of a floating-point array.

test_fmt.go
import (
    "fmt"
)

type Car struct{
    age int
    name string

}

func(c Car)String() string {
    return  fmt.Sprintf("Car-[name:%v, age:%v]", c.name, c.age)
}

func main(){
    c1 := Car{age:2, name:"buick"}
    c2 := Car{age:1, name:"benz"}
    fmt.Println(c1)
    // 对于切片中的对象,也能递归调用String()
    carSlice := []Car{}
    carSlice = append(carSlice, c1)
    carSlice = append(carSlice, c2)
    fmt.Println(carSlice)
}

输出

Car-[name:buick, age:2]
[Car-[name:buick, age:2] Car-[name:benz, age:1]]

参考资料

请我喝瓶饮料

微信支付码

猜你喜欢