go 打印結構體對象,結構體指針

簡言

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)
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章