Go 当我在一个结构片上迭代时,为什么不能访问结构字段

Go 当我在一个结构片上迭代时,为什么不能访问结构字段,go,struct,slice,Go,Struct,Slice,我在一个包中有一个函数,它返回我在包中定义的特定结构的一个切片,然后我将这个包导入另一个主包,我想迭代从函数返回的切片并访问structs字段,我得到了未定义的错误 s、 未定义的不能引用未报告的字段或方法 我错过了什么 谢谢你的帮助 软件包代码: 包测试包 进口fmt 类型结构{ 一串 b弦 } func ReturnStructSlice[]结构{ s1:=结构{a,b} s2:=Struct{c,d} structSliceToReturn:=[]结构{s1,s2} 对于uS:=范围结构切

我在一个包中有一个函数,它返回我在包中定义的特定结构的一个切片,然后我将这个包导入另一个主包,我想迭代从函数返回的切片并访问structs字段,我得到了未定义的错误

s、 未定义的不能引用未报告的字段或方法

我错过了什么

谢谢你的帮助

软件包代码:

包测试包 进口fmt 类型结构{ 一串 b弦 } func ReturnStructSlice[]结构{ s1:=结构{a,b} s2:=Struct{c,d} structSliceToReturn:=[]结构{s1,s2} 对于uS:=范围结构切片返回{ fmt.Println,s.a } 返回结构切片返回 } 这是主程序包: 包干管 进口 测试包 fmt func main{ sList:=t.ReturnStructSlice 对于z,s:=范围滑动列表{ fmt.Println,s.a\\n我得到了错误信息 } }
您需要将结构成员的第一个字母大写才能导出它们

type Struct struct {
    A string
    B string
}

错误消息解释了所有内容:无法引用未报告的字段或方法“a”。使用将回答有关该语言的所有基本语法问题。在Go中,所有小写函数/方法/字段都被视为私有的,并且仅对该文件可见。大写的名字表示公共的。在您的情况下,您希望通过另一个文件在外部使用test_包。因此,为了从文件外部调用Struct,必须将这些“a”和“b”字段设置为“a”和“b”