昨天總裁有問可不可以取結構裡面的值??
前面範例介紹結構時,就有直接取值來列印了.
請參考 http://ithelp.ithome.com.tw/question/10153641
至於透過reflect間接的方式,是留到今天講的.
其實昨天的範例,第三個欄位,字是拼錯的.
// hello32
package main
import (
"fmt"
"reflect"
)
type Eagle struct {
field1 bool "性別"
field2 string "姓名"
filed3 int "體重"
//^^^^^^
// 這裡字拼錯的
}
func main() {
LittleEagle := Eagle{true, "小鷹", 85}
// 知道欄位名稱時的方式,就是直接取用啊!
// 要用拼錯的 filed 才可以喔
fmt.Printf("%d\n", LittleEagle.filed3)
// 間接方式
// 取出第三個欄位名稱,管他是否有拼錯,抓來用.
// 由0開始,故index值是 2
field_name := reflect.TypeOf(LittleEagle).Field(2).Name
// 取值的方法 要用 ValueOf
val := reflect.ValueOf(LittleEagle)
// 搭配上面取得的 欄位名稱
weight1 := val.FieldByName(field_name).Int()
fmt.Printf("%d\n", weight1)
}
執行結果:
λ ./hello32
85
85