GO將mysql?中?decimal?數(shù)據(jù)類(lèi)型映射到?protobuf的操作方法
protobuf中 float與double
1、如何在rpc中優(yōu)雅取出dcemial類(lèi)型
例如我們?cè)趍ysql中定義的一個(gè)字段如下:
`discount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '折扣',
2、在rpc中 proto我們定義如下
這里主要展示一下在 protobuf中 float與double的一個(gè)區(qū)別
2.1、proto - double
*.proto
文件如下:
message Price { double discount = 1; // 折扣 }
我們來(lái)看一下定義為double生成的實(shí)體類(lèi)為
通過(guò)go-zero直接生成的*_pb.go
文件如下:
type Price struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Discount float64 `protobuf:"fixed64,6,opt,name=discount,proto3" json:"discount"` // 折扣 }
2.2、proto - float
*.proto
文件如下:
message Price { float discount = 1; // 折扣 }
我們來(lái)看一下定義為double生成的實(shí)體類(lèi)為
通過(guò)go-zero直接生成的*_pb.go
文件如下:
type Price struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Discount float32 `protobuf:"fixed32,1,opt,name=discount,proto3" json:"discount"` // 折扣 }
3、在go-zero的sqlx中生成的model
結(jié)論:sqlx將decimal類(lèi)型生成float64類(lèi)型的struct
對(duì)應(yīng)我們的第一條mysql的decimal類(lèi)型通過(guò)
orm生成model指令:
goctl model mysql datasource -url="root:123@tcp(127.0.0.1:3306)/數(shù)據(jù)庫(kù)名" -table="xxx" -dir=./internal/model
到此這篇關(guān)于go如何優(yōu)雅地將 mysql 中 decimal 數(shù)據(jù)類(lèi)型映射到 protobuf的文章就介紹到這了,更多相關(guān)go mysql數(shù)據(jù)類(lèi)型映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
GoLang職責(zé)鏈模式代碼實(shí)現(xiàn)介紹
這篇文章主要介紹了GoLang職責(zé)鏈模式代碼實(shí)現(xiàn),職責(zé)鏈模式是一種常用的設(shè)計(jì)模式,可以提高代碼的靈活性與可維護(hù)性,職責(zé)鏈模式將請(qǐng)求和處理分離,可以讓請(qǐng)求在處理鏈中依次經(jīng)過(guò)多個(gè)處理者,直到找到能夠處理請(qǐng)求的處理者為止2023-05-05Golang中文件目錄操作的實(shí)現(xiàn)步驟詳解
在Golang中,文件目錄是指計(jì)算機(jī)文件系統(tǒng)中的文件夾或目錄。目錄是用于組織和存儲(chǔ)文件的一種方式,可以包含文件和其他子目錄,本文主要介紹了Golang中文件目錄操作的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-05-05golang實(shí)現(xiàn)并發(fā)控制的方法和技巧
golang 是一門(mén)支持并發(fā)的編程語(yǔ)言,它提供了 goroutine 和 channel 等強(qiáng)大的特性,讓我們可以輕松地創(chuàng)建和管理多個(gè)執(zhí)行單元,實(shí)現(xiàn)高效的任務(wù)處理,在本文中,我們將介紹一些 golang 的并發(fā)控制的方法和技巧,希望對(duì)你有所幫助2024-03-03