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

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

Go 泛型:無效的復(fù)合文字類型 T

Go 泛型:無效的復(fù)合文字類型 T

Go
DIEA 2022-12-13 10:25:28
package mainimport (    "google.golang.org/protobuf/proto")type NetMessage struct {    Data []byte}type Route struct {}type AbstractParse interface {    Parse(*NetMessage) proto.Message}type MessageParse[T proto.Message] struct {}func (p *MessageParse[T]) Parse(message *NetMessage) proto.Message {    protoT := &T{}    if len(message.Data) > 0 {        err := proto.Unmarshal(message.Data, protoT)        if err != nil {            return nil        }    }    return protoT}當(dāng)我嘗試對(duì) Go 進(jìn)行通用編碼時(shí),我遇到了這個(gè)問題:./prog.go:23:13: 無效復(fù)合文字類型 T原因是什么?有什么辦法可以解決嗎?代碼鏈接: https: //go.dev/play/p/oRiH2AyaYb6
查看完整描述

1 回答

?
12345678_0001

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

不確定您是否需要泛型...但讓我們解決您的編譯錯(cuò)誤:


invalid composite literal type T

以及關(guān)于復(fù)合文字的Go 規(guī)范:


LiteralType 的核心類型 T 必須是結(jié)構(gòu)、數(shù)組、切片或映射類型(語法強(qiáng)制執(zhí)行此約束,除非類型作為 TypeName 給出)。


有問題的代碼是:


type MessageParse[T proto.Message] struct {}


func (p *MessageParse[T]) Parse(message *NetMessage) proto.Message {


    protoT := &T{} // <- here

泛型類型T受限于類型proto.Message。查看類型proto.Message (它是類型protoreflect.ProtoMessage的別名)表明它是 Gointerface類型而不是核心類型。因此它不能用于實(shí)例化復(fù)合文字。


您會(huì)在非泛型示例中遇到相同的編譯錯(cuò)誤,例如:


type mytype interface {

    SomeMethod() error

}


_ = &mytype{}  // // ERROR: invalid composite literal type mytype


查看完整回答
反對(duì) 回復(fù) 2022-12-13
  • 1 回答
  • 0 關(guān)注
  • 837 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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