亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 golang 將“enum”編組/解組到 DynamoDB

使用 golang 將“enum”編組/解組到 DynamoDB

Go
Cats萌萌 2023-07-04 09:54:35
我在 go 中有以下PartnerType“enum”結構:// PartnerType enumtype PartnerType intconst (    // PartnerTypeUnknown should never happen    PartnerTypeUnknown PartnerType = iota    // PartnerTypeTest test    PartnerTypeTest)func (t PartnerType) String() string {    names := [...]string{        "UNKNOWN",        "TEST"}    if t < PartnerTypeUnknown || t > PartnerTypeTest {        return names[0]    }    return names[t]}// MarshalJSON for enumfunc (t PartnerType) MarshalJSON() ([]byte, error) {    s := t.String()    return json.Marshal(s)}// UnmarshalJSON for enumfunc (t *PartnerType) UnmarshalJSON(b []byte) error {    *t = PartnerTypeUnknown    return nil}// MarshalText implements the text marshaller methodfunc (t *PartnerType) MarshalText() ([]byte, error) {    return []byte(t.String()), nil}// UnmarshalText implements the text unmarshaller methodfunc (t *PartnerType) UnmarshalText(text []byte) error {    *t = PartnerTypeUnknown    return nil}// Partner entitytype Partner struct {    ID   string `dynamodbav:"PK,omitempty"`    Foo string `dynamodbav:"SK,omitempty"`    PartnerType              PartnerType    `dynamodbav:",omitempty,string"`}在執行 a 時,dynamodbattribute.MarshalMap()我希望PartnerType將 my 存儲為字符串。dynamodbav結構標記允許您將 int 存儲為字符串 ( ) ,dynamodbav:",omitempty,string"但它不會調用我定義的.String()或Marshal/Unmarshal實現。換句話說,它存儲PartnerTypeTest為"1"not "TEST"。如何才能做到這一點?
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

對于 dynamodb,您可以為枚舉實現編組器/解組器


請嘗試以下操作:


// MarshalDynamoDBAttributeValue for ddb

func (t PartnerType) MarshalDynamoDBAttributeValue(av *dynamodb.AttributeValue) error {

    s := t.String()

    av.S = &s

    return nil

}


// UnmarshalDynamoDBAttributeValue implements the Unmarshaler interface

func (t *PartnerType) UnmarshalDynamoDBAttributeValue(av *dynamodb.AttributeValue) error {

    // val := aws.StringValue(av.S)


    *t = PartnerTypeUnknown

    return nil

}


查看完整回答
反對 回復 2023-07-04
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號