Cassandra十进制的Golang类型

时间:2018-10-30 14:52:32

标签: go cassandra

很抱歉提出这个问题,但是累了之后在这里写。

我无法将Golang的任何变量类型映射为多精度的Cassandra的Decimal类型

我使用了{}接口,只要不将值放在变量中就可以使用。我做的那一刻有问题

2 个答案:

答案 0 :(得分:5)

您可以使用无限精度十进制软件包并直接导入此gopkg,

import "gopkg.in/inf.v0"

假设您有一个特定的模型,该模型使用十进制数据类型来反映或绑定到Scylla / Cassandra表,

type TradeModel struct {
    Balance *inf.Dec
}

要将字符串强制转换或转换为该十进制数据类型,可以使用以下函数:

func ToDecimal(s string) *inf.Dec {
    d := new(inf.Dec)

    res, _ := d.SetString(s)
    return res
}

看下面的例子:https://github.com/go-inf/inf/blob/master/dec.go

注意:为简单起见,我没有明确地从SetString返回值中写入第二个结果。该参数将返回一个布尔值,表明转换是否成功,这很重要(在我的情况下,这已经在直接帮助程序中了。)

答案 1 :(得分:0)

https://github.com/gocql/gocql/blob/master/helpers.go

通过此链接,我发现inf.Dec类型的Golang映射到Cassandra的Decimal

var decimal inf.Dec

decimal := inf.NewDec(1, 0)