第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 GO 中寫入鑲木地板時(shí)如何處理 NaN 值?

在 GO 中寫入鑲木地板時(shí)如何處理 NaN 值?

Go
料青山看我應(yīng)如是 2022-12-26 10:28:44
我正在嘗試寫入 GO 中的鑲木地板文件。在寫入此文件時(shí),我可以獲得NaN值。由于NaN既沒有在原始類型中定義也沒有在邏輯類型中定義那么我如何在 GO 中處理這個(gè)值?是否有任何現(xiàn)有模式適用于它?我正在使用此處的 parquet GO 庫。您可以在此處使用此庫找到使用 JSON 模式寫入鑲木地板的代碼示例。
查看完整描述

1 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)問題在xitongsys/parquet-goissue 281中被詳細(xì)討論,建議是

使用OPTIONAL類型。
即使你不分配一個(gè)值(就像你的代碼),非點(diǎn)值也會(huì)被分配一個(gè)默認(rèn)值。
所以parquet-go不知道它是空值還是默認(rèn)值。

然而:

歸結(jié)為我不能使用該OPTIONAL類型,換句話說,我不能將我的結(jié)構(gòu)轉(zhuǎn)換為使用指針。
我曾嘗試repetitiontype=OPTIONAL用作標(biāo)簽,但這會(huì)導(dǎo)致一些奇怪的行為。
我希望該標(biāo)簽的行為方式omitempty與 Golang 標(biāo)準(zhǔn)庫中的標(biāo)簽相同,即如果該值不存在,則不會(huì)將其放入 JSON 中。

這一點(diǎn)很重要的原因是,如果該字段丟失或未設(shè)置,當(dāng)它被編碼為鑲木地板時(shí),則無法判斷該值是 0 還是在 int64 的情況下只是未設(shè)置。

這說明了這個(gè)問題:

package main


import (

    "encoding/json"

    "io/ioutil"

)


type Salary struct {

    Basic, HRA, TA float64 `json:",omitempty"`

}


type Employee struct {

    FirstName, LastName, Email string `json:",omitempty"`

    Age                        int

    MonthlySalary              []Salary `json:",omitempty"`

}


func main() {

    data := Employee{

        Email: "mark@gmail.com",

        MonthlySalary: []Salary{

            {

                Basic: 15000.00,

            },

        },

    }


    file, _ := json.MarshalIndent(data, "", " ")


    _ = ioutil.WriteFile("test.json", file, 0o644)

}

生成的 JSON 為:


{

 "Email": "mark@gmail.com",

 "Age": 0,

 "MonthlySalary": [

  {

   "Basic": 15000

  }

 ]

}

如您所見,結(jié)構(gòu)中具有omit empty標(biāo)記但未分配的項(xiàng)目不會(huì)出現(xiàn)在 JSON 中,即HRA TA.

但另一方面Age沒有這個(gè)標(biāo)簽,因此它仍然包含在 JSON 中。


這是有問題的,因?yàn)楫?dāng)這個(gè) golang 庫寫入時(shí),結(jié)構(gòu)中的所有字段都被分配了內(nèi)存,parquet-所以如果你有一個(gè)大的結(jié)構(gòu),它只是稀疏地填充,它仍然會(huì)占用全部?jī)?nèi)存。

當(dāng)再次讀取文件時(shí),這是一個(gè)更大的問題,因?yàn)闊o法知道放入鑲木地板文件中的值是空值還是只是未分配。


如果我能讓你相信擁有它的價(jià)值,我很樂意幫助omitempty為這個(gè)庫實(shí)現(xiàn)一個(gè)標(biāo)簽。



查看完整回答
反對(duì) 回復(fù) 2022-12-26
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)