在我的代碼中,我得到了js.Value
一個簡單的物件{"Age":19}
為了顯示它,我使用了:
data := fmt.Sprintf("Age: %v", value.Get("age"))
fmt.Println(data)
但輸出是:
Age: <number: 19>
預期輸出為:
Age: 19
有一次,我取代了%v
通過%d
為:
data := fmt.Sprintf("Age: %v", value.Get("age"))
fmt.Println(data)
我有:
Age: {[] 4626041242239631360 0}
uj5u.com熱心網友回復:
js.Value.Get
js.Value
再次回傳a ,并js.Value
實作fmt.Stringer
介面。您看到的輸出是呼叫Value.String()
包裝的實體的結果js.TypeNumber
字串以字串形式回傳值 v。由于 Go 的 String 方法約定,String 是一種特殊情況。與其他 getter 不同,如果 v 的 Type 不是 TypeString,它不會恐慌。相反,它回傳形式為 "" 或 "<T: V>"的字串,其中 T 是 v 的型別,V 是 v 值的字串表示。
使用Value.Int()
或Value.Float()
解開數值:
data := fmt.Printf("Age: %d", value.Get("age").Int())
這{[] 4626041242239631360 0}
是Value
結構本身及其內部結構的字串表示形式。以供參考:
type Value struct {
_ [0]func() // uncomparable; to make == not compile
ref ref // identifies a JavaScript value, see ref type
gcPtr *ref // used to trigger the finalizer when the Value is not referenced any more
}
uj5u.com熱心網友回復:
的檔案js.Value
顯示 的結果Get
是另一個Value
結構,而不是整數。因此,當您js.Value
使用 %v列印結果時,它會轉到 a 的默認格式化程式js.Value
,它會列印型別和值。
當您明確告訴它列印為 %d 時,它會將 Value 結構列印為數字,在這種情況下,這意味著一個空陣列、一個ref
結構體和一個*ref
指標,如您在代碼中所見:https :
//golang.org/源代碼/系統呼叫/js/js.go
您可能想要的是呼叫該Int()
方法,該方法將值作為整數回傳:
data := fmt.Sprintf("Age: %d, value.Get("Age").Int())
fmt.Println(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358740.html
上一篇:如何測量函式運行時間
下一篇:redis:can'tmarshalmap[string]string(implementencoding.BinaryMarshaler)----在Refi介面中