簡言
1. go語言提供了簡潔的打印功能,比如%d, %v, %+v等等,具體可以參考筆者的這篇博客
https://blog.csdn.net/yzf279533105/article/details/105433262
2. %v打印結構體的指針時可以自動打印出各個變量,但是打印結構體指針的數組時,只能打印出一串內存地址,這個很不清晰
3. 結構體指針的數組時,如果想打印出裏面各個指針對象的各個變量時,需要爲結構體定義一個String()的函數,也就是自定義
實驗如下圖(第一行輸出是一串內存地址,第二行是我們定義了String()函數輸出的)
代碼如下:
package main
import (
"fmt"
)
// 結構體1,因爲沒有String()函數,所以該結構體指針的數組打印時會輸出一串內存地址
type student struct {
Age int32
Name string
}
// 結構體2,因爲有了String()函數,所以該結構體指針的數組打印時會調用String()函數
type teacher struct {
High int32
Sex int32
}
func (t *teacher) String() string {
return fmt.Sprintf("{High:%d,Sex:%d}", t.High, t.Sex)
}
func main() {
// 結構體指針的數組1
arr1 := []*student{
&student{Age: 1, Name: "111"},
&student{Age: 2, Name: "222"},
}
fmt.Printf("打印結構體指針數組1:%v \n", arr1)
// 結構體指針的數組2
arr2 := []*teacher{
&teacher{High: 170, Sex: 17},
&teacher{High: 180, Sex: 18},
}
fmt.Printf("打印結構體指針數組2:%v \n", arr2)
}