各位亲, 我在修改 open-falcon 中 swcollection 插件支持 网卡丢包的过程中, 遇到了一个问题, 一般网卡流量,包等指标都是 uint64 的,可是这个 Discads 指标却是 uint32 , 并且报了如下错误, 求助~
cannot assign uint64 to ifStats.IfInDiscards (type uint32) in multiple assignment
1
rrfeng 2016-07-04 22:54:16 +08:00
和其他语言有什么不同吗?难道不就是个类型转换的问题?
|
2
Valyrian 2016-07-05 02:45:41 +08:00 via iPhone
可以强行转 a = uint32(b)
(还是 a = b.unit32 …忘了) |
3
zzlyzq OP 感谢大家提供的线索。
无论如何,我是看不懂 go 语言的。 经过一阵折腾,最后解决了: 这是 github.com/gaochao1/sw/ifstat_snmpwalk.go 中的一行。 ifStats.IfInDiscards, _ = strconv.Atoi(ifInDiscardsMap[ifIndex]) // 关键在 Atoi , 因为 gosnmp 在识别 Discards 和 Errors 的时候,识别成了 Counter32 ,在 go 看来就是 int ,而不像网卡流量, 是 Counter64 , go 识别成 uint64 。 目前目标已经达成, 就是用 swcollection 去完成采集网络设备 Discards 和 Errors 的功能。 目前正在验证。 |