为了账号安全,请及时绑定邮箱和手机立即绑定

看不到 struct Golang 的公共函数

看不到 struct Golang 的公共函数

Go
ABOUTYOU 2023-06-19 15:52:41
我没有看到我定义的结构的公共方法。有人可以让我明白为什么吗?这是代码:// 数据保存器.go:package DataStorageimport (   "fmt"   "os")type DataSaver struct {   // doesn't relevant to my question   fileName string   file     *os.File}func PrintStr() {   fmt.Println("hello")}然后,我在其他类中有一个主要方法。我初始化了结构,我想调用 PrintStr() 函数。但是,我无法调用此方法。为什么?谢谢你!
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

那不是方法,它只是一个函数。

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


查看完整回答
反对 回复 2023-06-19
?
jeck猫

TA贡献1909条经验 获得超7个赞

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


func (this DataSaver)PrintStr() {

   fmt.Println("hello")

}


或者


func (this *DataSaver)PrintStr() {

   fmt.Println("hello")

}

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


查看完整回答
反对 回复 2023-06-19
?
慕村225694

TA贡献1880条经验 获得超4个赞

我玩过这个,有几件事需要注意:

  1. 确保根据 GOPATH 正确导入包,例如

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

并确保你的包/存储库在你的 GOPATH 和正确的目录中(go 对你如何做到这一点非常挑剔)

  1. 使用包名称引用您的函数,如下所示:

    func main(){ DataStorage.PrintStr() }

另一张海报是正确的,因为 go 约定是将包名称保持小写。


查看完整回答
反对 回复 2023-06-19
  • 3 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信