猿问

看不到 struct Golang 的公共函数

我没有看到我定义的结构的公共方法。有人可以让我明白为什么吗?这是代码:


// 数据保存器.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")

}

然后,我在其他类中有一个主要方法。我初始化了结构,我想调用 PrintStr() 函数。但是,我无法调用此方法。为什么?


谢谢你!


ABOUTYOU
浏览 129回答 3
3回答

猛跑小猪

那不是方法,它只是一个函数。导入 DataStorage(您应该将其设为小写)然后您可以调用 DataStorage.PrintStr()

jeck猫

似乎您还没有方法接收器的概念。您的结构方法应定义如下:func (this DataSaver)PrintStr() {   fmt.Println("hello")}或者func (this *DataSaver)PrintStr() {   fmt.Println("hello")}您选择哪个取决于您是否要在指针上调用该方法;

慕村225694

我玩过这个,有几件事需要注意:确保根据 GOPATH 正确导入包,例如导入“github.com/some-repo/datastorage”并确保你的包/存储库在你的 GOPATH 和正确的目录中(go 对你如何做到这一点非常挑剔)使用包名称引用您的函数,如下所示:func main(){ DataStorage.PrintStr() }另一张海报是正确的,因为 go 约定是将包名称保持小写。
随时随地看视频慕课网APP

相关分类

Go
我要回答