Go 不';我看不到结构物的公共功能

Go 不';我看不到结构物的公共功能,go,Go,我没有看到我定义的结构的public方法。 有人能告诉我为什么吗? 代码如下: //DataSaver.go: package DataStorage import ( "fmt" "os" ) type DataSaver struct { // doesn't relevant to my question fileName string file *os.File } func PrintStr() { fmt.Println("hello

我没有看到我定义的结构的public方法。 有人能告诉我为什么吗? 代码如下:

//DataSaver.go:

package DataStorage

import (
   "fmt"
   "os"
)

type DataSaver struct {
   // doesn't relevant to my question
   fileName string
   file     *os.File
}

func PrintStr() {
   fmt.Println("hello")
}
然后,我在另一个类中有一个main方法。我初始化了结构,并想调用PrintStr()函数。但是,我无法调用此方法。为什么?


谢谢大家!

这不是一个方法,它只是一个函数


导入DataStorage(您应该将其设置为小写),然后您可以调用DataStorage.PrintStr()

我自己也在玩这个,有几件事需要注意:

  • 确保您正确导入了与GOPATH相关的包,例如

    导入“github.com/some repo/datastorage”

  • 并确保您的包/repo位于您的GOPATH和正确的目录中(go对如何实现这一点非常挑剔)

  • 使用包名称引用函数,如下所示:

    func main(){ DataStorage.PrintStr() }


  • 另一张海报是正确的,因为go惯例是将包名保持为小写。

    似乎您还没有方法接收器的概念。结构的方法应定义如下:

    func (this DataSaver)PrintStr() {
       fmt.Println("hello")
    }
    
    


    您选择哪一个取决于您是否要在指针上调用该方法

    我想实例化一个对象,然后在此对象上调用PrintStr()。我怎样才能做到这一点?我看不到公共功能。谢谢,请坐飞机。它将回答有关基本语法和语言功能的任何问题。
    func (this *DataSaver)PrintStr() {
       fmt.Println("hello")
    }