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

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

為什么這是 `*invalid type` 而不是 `*Games`?

為什么這是 `*invalid type` 而不是 `*Games`?

Go
qq_花開花謝_0 2022-10-31 16:21:45
如果您在此處運行分析包:https ://github.com/frederikhors/iss-goland-invalid-type :go run ./analysis它將打?。篺ield.Name: id - field.Type: stringfield.Name: name - field.Type: string        field.Name: games - field.Type: *invalid type我不明白為什么我要*invalid type代替*Games?代碼分析/main.go:package mainimport (    "go/types"    "golang.org/x/tools/go/packages")func main() {    playerModel := LoadPackage("./player.go")    var playerStruct *types.Struct    for _, entity := range playerModel.Types.Scope().Names() {        if entity == "Player" {            playerStruct = GetStruct(entity, playerModel)            break        }    }    for i := 0; i < playerStruct.NumFields(); i++ {        field := playerStruct.Field(i)        println("field.Name: " + field.Name() + " - field.Type: " + field.Type().String())    }}func LoadPackage(path string) *packages.Package {    const mode = packages.NeedTypes |        packages.NeedName |        packages.NeedSyntax |        packages.NeedFiles |        packages.NeedTypesInfo |        packages.NeedTypesInfo |        packages.NeedModule    cfg := &packages.Config{Mode: mode}    pkgs, err := packages.Load(cfg, path)    if err != nil {        panic(err)    }    return pkgs[0]}func GetStruct(structName string, pkg *packages.Package) *types.Struct {    foundStruct := pkg.Types.Scope().Lookup(structName)    if foundStruct == nil {        return nil    }    res, _ := foundStruct.Type().Underlying().(*types.Struct)    return res}播放器.go:type Player struct {    id    string    name  string    games *Games}游戲.go:package maintype Games struct {    wins   []string    losses []string}
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

使用LoadPackage("./player.go"). 并且該文件不是聲明類型的文件Games。要加載有關所有類型包的信息,您需要加載整個包。

你需要使用LoadPackage(".").


查看完整回答
反對 回復 2022-10-31
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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