Golang中Sprintf显示<number: 19>而不是9的问题
Golang中Sprintf显示<number: 19>而不是9的问题
在我的代码中,我获取了一个 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: %d", value.Get("age"))
fmt.Println(data)
我得到了:
Age: {[] 4626041242239631360 0}
更多关于Golang中Sprintf显示<number: 19>而不是9的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
Get 仍然返回一个 Value。
如果你确定它是一个数字,你可能需要对其调用 Int。
更多关于Golang中Sprintf显示<number: 19>而不是9的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
value.Get("age") 的返回类型是什么?
你可能需要先将该类型序列化为结构体。
js.Value 类型需要显式转换为 Go 的基本类型才能正确格式化。使用 Int() 方法获取整数值:
package main
import (
"fmt"
"syscall/js"
)
func main() {
// 模拟 js.Value 对象
obj := js.ValueOf(map[string]interface{}{"Age": 19})
ageValue := obj.Get("Age")
// 正确转换并格式化
data := fmt.Sprintf("Age: %d", ageValue.Int())
fmt.Println(data) // 输出: Age: 19
}
如果值可能是浮点数,使用 Float() 方法:
data := fmt.Sprintf("Age: %.0f", ageValue.Float())
对于字符串值:
data := fmt.Sprintf("Name: %s", nameValue.String())
检查值类型后再转换:
switch ageValue.Type() {
case js.TypeNumber:
data := fmt.Sprintf("Age: %d", ageValue.Int())
fmt.Println(data)
case js.TypeString:
data := fmt.Sprintf("Age: %s", ageValue.String())
fmt.Println(data)
}

