当前位置:  开发笔记 > 编程语言 > 正文

Golang比较数字

如何解决《Golang比较数字》经验,为你挑选了1个好方法。

我有两个interface{}s a,b来自JSON解码和用户输入,让我们说:

var a interface{} = ...
var b interface{} = ...

我知道他们是数字.它们可以是以下任何类型:

unit
unit8
uint16
uint32
uint64
int
int8
int16
int32
int64
float
float32
float64

我写了一些测试代码如下.事实证明,当一个变量是int,它将失败并带有int64断言.

var a interface{} = 1
v, f := a.(int64)
fmt.Println(v, f) //0 false
v1, f1 := a.(int)
fmt.Println(v1, f1) //1 true

所以现在我的问题如下:为了比较这两个数字,为​​了获得这两个interface{}变量的类型,我是否必须测试这些超过10种类型的所有排列?理想情况下,我只想将它们投射到int64float64,但如果它们是int或者float,我将无法找到它们,直到用尽所有可能的类型.



1> Elwinar..:

如果您的输入来自JSON输入,那么它是一个float64,根据文档:

要将JSON解组为接口值,Unmarshal会将其中一个存储在接口值中:

bool,用于JSON布尔

float64,用于JSON数字

字符串,用于JSON字符串

[] interface {},用于JSON数组

map [string] interface {},用于JSON对象

n为JSON null

如果它来自用户输入,那么当你阅读它时,它就是你决定的,所以你不应该有任何问题来获得正确的类型.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有