在go中导入struct,得到“ not a type”错误

I import a struct defined in another package, when try to use it to construct a literal, get a "not a type" error.

In publish.go

type Book struct {
    Name string
    Author string
    Published bool
}

In store.go

import "publish"

func Init() {
    var reading publish.Book

    b := &reading {
        Name: "Learn Go Lang",
        Author: "Rob",
        Published: true
    }
}

Error: reading is not a type

1个回答

Here you try to make a struct of Type "reading"

b := &reading {
       Name: "Learn Go Lang",
       Author: "Rob",
       Published: true
    }

What you want is a struct of type publish.Book

b := & publish.Book {
       Name: "Learn Go Lang",
       Author: "Rob",
       Published: true,
    }

plus you also need a comma at the end of the last in a multi-line struct declaration.

duannei0044
duannei0044 别名和实例不等效。 别名是一种类型的重命名。 您可以具有相同类型的多个实例。 (我的意思是类型为book的变量)。
3 年多之前 回复
donglu9743
donglu9743 “ Book的变量”是什么意思? 是否不等同于该类型的别名或实例?
3 年多之前 回复
dse3168
dse3168 var阅读publish.Book声明Book的变量,它不会创建该类型的别名。 如果需要,可以使用reading.Name =“ Learn Go Lang”等来分配阅读元素。
3 年多之前 回复
dsa111111
dsa111111 嗨,本,谢谢您的回复。 是的,直接使用&publish.Book {...}即可。 但是我想知道为什么不能创建本地实例:var阅读publish.Book,然后&reading {...}
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐