从另一个包返回结构切片 - 打印数据但不打印字段[重复]

问题描述 投票:0回答:1

假设我有两个包,“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 我尝试了很多东西,比如指向整个切片和电影结构的指针,但到目前为止没有任何效果。作为一个初学者,我一定犯了一个根本性的错误,导致了这个结果

go struct package slice
1个回答
1
投票

以小写字母开头的标识符被视为未导出。未导出的标识符无法从声明它们的包外部访问。换句话说,使用以 Uppercase 开头的 idnetifiers 来导出它们,以便其他包可以访问它们。有关更多信息,请参阅:https://go.dev/ref/spec#Exported_identifiers

type Tp struct {
    Uid  int
    Test string
}
© www.soinside.com 2019 - 2024. All rights reserved.