Struct 如何导入其他包中的结构?

Struct 如何导入其他包中的结构?,struct,go,Struct,Go,我试图学习围棋,但我经常感到沮丧,因为其他语言的一些基本功能在围棋中似乎不起作用。所以基本上,我想使用struct类型 在其他文件中定义。我能够使用除struct type之外的函数。在main.go中 package main import ( "list" ) func main() { lst := list.NewList(false) lst.Insert(5) lst.Insert(7)

我试图学习围棋,但我经常感到沮丧,因为其他语言的一些基本功能在围棋中似乎不起作用。所以基本上,我想使用struct类型 在其他文件中定义。我能够使用除struct type之外的函数。在main.go中

  package main

  import (
      "list"
  )

  func main() {
      lst := list.NewList(false)         
      lst.Insert(5)
      lst.Insert(7)
      lst.InsertAt(2, 1)
      lst.PrintList()
  }
正如我所期望的那样(列表以$GOPATH形式显示),它(以及所有其他函数)工作得非常好。在包列表中,我定义了struct如下:

type LinkedList struct {
    head    *node
    size    int
    isFixed bool
}
我想在其他结构中使用这个结构,所以我尝试这样做

type SomeType struct {
    lst *LinkedList
}

但不幸的是,我得到的错误是没有定义LinkedList类型。如何使用在其他包中定义的结构?

链接列表类型位于
列表
命名空间中,因此请将该类型的用法更改为:

type SomeType struct {
    lst *list.LinkedList
}

回答你的问题了吗?没有。正如我所说的,除了直接使用struct类型之外,其他所有函数都可以工作。这篇文章是关于导入其他文件的,我在查找包时没有遇到任何错误。只要结构的名称有大写的第一个字母,就应该可以使用名称空间名称(如@tobi showed)访问它。结构的名称必须是大写?@REALFREE Go根据变量的第一个字母大小写决定是公共的还是包私有的。这对那些想要疯狂变量名的人来说很烦人,但这是一个非常有用的惯例。@REALFREE,“effectivego”。请仔细阅读这个文件之前认真涉足GO。part@REALFREE我在开始时也遇到过同样的问题,很难记住Go的所有特性,隐式导出语义是不寻常的,但现在您将永远记住,有没有一种方法可以引用从包中导入的类型,而不使用完全限定的包标识符?我已经尝试了
键入T package.T
,但是,如果我有一个与
package.T
关联的函数,
T.functionname()
将被视为未定义。有线索吗?