假设我有两个包,“main”和“src/test” 在测试包中,我有分配数据结束返回它的结构和函数
package abc
type Tp struct {
uid int
test string
}
func Testing() []Tp {
var data []Tp
temp := Tp{1, "b"}
data = append(data, temp)
temp = Tp{2, "c"}
data = append(data, temp)
return data
}
在主包中,我想获取 Tp 类型的结构切片并访问字段,如下所示:
package main
import (
"fmt"
"testing/src/abc"
)
func main() {
t := abc.Testing()
fmt.Println(t[0].test) // <--- error undefined (type excel.Tp has no field or method
}
上面我收到错误 - type excel.Tp 没有字段或方法 但如果我用
fmt.Println(t)
或 fmt.Println(t[0])
打印数据,它会毫无问题地打印数据
稍后我需要循环切片并访问底层结构的字段
如何返回带有字段的结构?
数据正在返回,并且类型为 abc.Tp 我尝试了很多东西,比如指向整个切片和电影结构的指针,但到目前为止没有任何效果。作为一个初学者,我一定犯了一个根本性的错误,导致了这个结果
以小写字母开头的标识符被视为未导出。未导出的标识符无法从声明它们的包外部访问。换句话说,使用以 Uppercase 开头的 idnetifiers 来导出它们,以便其他包可以访问它们。有关更多信息,请参阅:https://go.dev/ref/spec#Exported_identifiers
type Tp struct {
Uid int
Test string
}