登录
首页 >  Golang >  Go问答

Golang 中的 Cassandra 十进制数据类型

来源:stackoverflow

时间:2024-03-23 19:18:33 259浏览 收藏

在 Go 中使用 Cassandra 的 Decimal 数据类型时,直接映射 Go 变量类型可能会遇到困难。可以使用无限精度十进制包 (gopkg.in/inf.v0) 来处理这种类型。将字符串强制转换为十进制类型,可以使用 ToDecimal() 函数,它接收一个字符串并返回一个 inf.Dec 类型。有关详细信息和示例,请参阅 GitHub 上提供的文档。

问题内容

很抱歉问这个问题,但在累了之后我把它写在这里。

我无法将 Golang 的任何变量类型映射到 Cassandra 的 Decimal 类型,这是多精度的

我使用了接口 {},只要我不为变量赋值,它就可以工作。我一这么做,就有问题了


解决方案


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

导入“gopkg.in/inf.v0”

假设您有一个特定的模型,它反映或绑定到具有十进制数据类型的 scylla/cas​​sandra 表,

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 返回值的第二个结果。无论转换是否成功,该参数都会返回一个布尔值,这很重要(在我的例子中,这已经在直接助手中)。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang 中的 Cassandra 十进制数据类型》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>