欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go xorm存庫處理null值問題

 更新時(shí)間:2023年12月28日 10:12:16   作者:Q_X_Q 慶  
這篇文章主要介紹了go xorm存庫處理null值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

go xorm存庫處理null值

go 的結(jié)構(gòu)有默認(rèn)值, 這樣從數(shù)據(jù)庫獲取的時(shí)候, null 值會(huì)被解析成 0 , 而0 在系統(tǒng)是一個(gè)有效值。

Go 的結(jié)構(gòu)體不直接支持整數(shù)類型的 NULL 值。

Go 是一種靜態(tài)類型語言,結(jié)構(gòu)體的字段類型在編譯時(shí)必須確定。

整數(shù)類型(如 int、int64 等)是非指針類型,不能直接存儲(chǔ) NULL 值。

然而,你可以使用指針類型來模擬整數(shù)類型的 NULL 值。

通過將整數(shù)字段定義為指針類型,可以將其設(shè)置為指向整數(shù)值或者為 nil(NULL)。

示例

func main() {
	db, err := NewDBCnn()
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	var a int = 13
	b1 := &ModelUser{
		Id:      431,
		Name:    "測(cè)試新增2",
		Age:     &a,
		Passwd:  nil,
		Created: "",
		Updated: "",
	}
	db.Insert(b1)

	bean := new(ModelUser)
	rows, err := db.Rows(bean)
	if err != nil {
		fmt.Println(err.Error())
	}
	defer rows.Close()
	var ret = make(map[int64]ModelUser)

	for rows.Next() {
		bean = new(ModelUser)
		rows.Scan(bean)

		ret[bean.Id] = *bean
	}
	for _, v := range ret {
		fmt.Println(fmt.Sprintf("%v", v))
	}
	test, _ := json.Marshal(ret)
	fmt.Println(string(test))

}

// NewDBCnn 新建數(shù)據(jù)庫連接
func NewDBCnn() (*xorm.Engine, error) {

	engine, err := xorm.NewEngine("mysql", "root:localsense@tcp(127.0.0.1:3306)/test?charset=utf8")
	if err != nil {
		// 處理連接錯(cuò)誤
	}

	return engine, err
}

type ModelUser struct {
	Id      int64   `xorm:"id" json:"id"`
	Name    string  `xorm:"name" json:"name"`
	Salt    *string `xorm:"salt" json:"salt"`
	Age     *int    `xorm:"age" json:"age"`
	Passwd  *int    `xorm:"passwd" json:"passwd,omitempty"`
	Created string  `xorm:"created" json:"created,omitempty"`
	Updated string  `xorm:"updated" json:"updated,omitempty"`
}

func (e ModelUser) TableName() string {
	return "user"
}

數(shù)據(jù)庫中的值

程序運(yùn)行一下

C:\Users\Josslynn\AppData\Local\Temp\GoLand\___1go_build_main_go__2_.exe
{1 dj 0xc000061fa0 0xc00001f070 0xc00001f088 2023-03-03 10:31:34 2023-03-03 10:31:34}
{3  <nil> <nil> <nil>  }
{43 測(cè)試新增 <nil> <nil> <nil> 2023-05-23 15:02:12 2023-05-23 15:02:12}
{431 測(cè)試新增2 <nil> 0xc00001f130 <nil> 2023-05-23 15:19:17 2023-05-23 15:19:17}
{"1":{"id":1,"name":"dj","salt":"salt","age":18,"passwd":12345,"created":"2023-03-03 10:31:34","updated":"2023-03-03 10:31:34"},"3":{"id":3,"name":"","salt":null,"age":null},"43":{"id":43,"name":"測(cè)試","salt":null,"age":null,"created":"2023-05-23 15:02:12","updated":"2023-05-23 15:02:12"},"431":{"id":431,"name":"測(cè)試新增2","salt":null,"age":13,"created":"2023-05-23 15:19:17","updated":"2023-05-23 9:17"}}

指針可以讀到 數(shù)據(jù)庫的null 值, json 解析的時(shí)候 也能 轉(zhuǎn)成null 值。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • go?time.After優(yōu)化后性能提升34%內(nèi)存減少67%

    go?time.After優(yōu)化后性能提升34%內(nèi)存減少67%

    這篇文章主要介紹了go語言time.After優(yōu)化后性能提升34%內(nèi)存減少67%實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • ubuntu安裝golang并設(shè)置goproxy的方法步驟

    ubuntu安裝golang并設(shè)置goproxy的方法步驟

    在Ubuntu系統(tǒng)上安裝Go語言(Golang)有多種方法,包括使用包管理器、從源代碼編譯安裝以及使用版本管理工具如gvm,安裝完成后,為了方便管理Go語言項(xiàng)目依賴,需要設(shè)置GOPATH環(huán)境變量并配置Go代理,本文介紹ubuntu安裝golang并設(shè)置goproxy的方法,感興趣的朋友一起看看吧
    2024-10-10
  • Go?一般方法與接口方法接收者的差異詳解

    Go?一般方法與接口方法接收者的差異詳解

    這篇文章主要為大家介紹了Go?一般方法與接口方法接收者的差異詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 用go語言實(shí)現(xiàn)WebAssembly數(shù)據(jù)加密的示例講解

    用go語言實(shí)現(xiàn)WebAssembly數(shù)據(jù)加密的示例講解

    在Web開發(fā)中,有時(shí)候?yàn)榱颂嵘踩孕枰獙?duì)數(shù)據(jù)進(jìn)行加密,由于js代碼相對(duì)比較易讀,直接在js中做加密安全性較低,而WebAssembly代碼不如js易讀,本文提供一個(gè)用go語言實(shí)現(xiàn)的WebAssembly數(shù)據(jù)加密示例,需要的朋友可以參考下
    2024-03-03
  • 解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題

    解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題

    這篇文章主要介紹了解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • go redis之redigo的使用

    go redis之redigo的使用

    本文主要介紹了go redis之redigo的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 一文詳解Go語言io包中的discard類型

    一文詳解Go語言io包中的discard類型

    這篇文章主要介紹了Go語言io包中的discard類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • golang內(nèi)置net/http包的使用詳解

    golang內(nèi)置net/http包的使用詳解

    在Go語言中,內(nèi)置的net/http包提供了一種出色的方式來處理HTTP請(qǐng)求和響應(yīng),不僅功能強(qiáng)大,而且易于使用,本文將帶大家深入了解Go語言內(nèi)置的net/http包,揭示其強(qiáng)大的功能和用法,希望對(duì)大家有所幫助
    2023-11-11
  • Go 通過結(jié)構(gòu)struct實(shí)現(xiàn)接口interface的問題

    Go 通過結(jié)構(gòu)struct實(shí)現(xiàn)接口interface的問題

    這篇文章主要介紹了Go 通過結(jié)構(gòu)struct實(shí)現(xiàn)接口interface的問題,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Golang等多種語言轉(zhuǎn)數(shù)組成字符串舉例詳解

    Golang等多種語言轉(zhuǎn)數(shù)組成字符串舉例詳解

    今天寫代碼遇到數(shù)組轉(zhuǎn)換成字符串操作,下面這篇文章主要給大家介紹了關(guān)于Golang等多種語言轉(zhuǎn)數(shù)組成字符串的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評(píng)論