You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go中Sprintf处理js.Value时输出<number:19>而非19的问题求解

问题原因

value.Get("age") 返回的是 syscall/js 包定义的 js.Value 结构体类型,不是Go原生的整数类型:

  • 用%v格式化时,输出的是js.Value结构体的默认字符串表示,所以会出现<number: 19>的结果
  • 用%d格式化时,会尝试直接输出结构体内部的字段值,因此得到无关的长数字

解决方案

调用js.Value提供的类型转换方法,将其转为Go原生类型后再做格式化:

// 先调用Int()方法将js.Value转为Go的int类型
age := value.Get("Age").Int()
data := fmt.Sprintf("Age: %d", age)
fmt.Println(data)

注意事项

  • JS对象属性名大小写敏感,如果你JS侧的对象键是首字母大写的Age,Get方法参数也要对应写"Age",否则会取到undefined,类型转换会得到0
  • 不同JS类型对应不同的转换方法:字符串用String()、浮点数用Float()、布尔值用Bool()即可

内容的提问来源于stack exchange,提问作者Hasan A Yousef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:15:04