我沒有看到我定義的結構的公共方法。有人可以讓我明白為什么嗎?這是代碼:// 數據保存器.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 回答

jeck貓
TA貢獻1909條經驗 獲得超7個贊
似乎您還沒有方法接收器的概念。您的結構方法應定義如下:
func (this DataSaver)PrintStr() {
fmt.Println("hello")
}
或者
func (this *DataSaver)PrintStr() {
fmt.Println("hello")
}
您選擇哪個取決于您是否要在指針上調用該方法;

慕村225694
TA貢獻1880條經驗 獲得超4個贊
我玩過這個,有幾件事需要注意:
確保根據 GOPATH 正確導入包,例如
導入“github.com/some-repo/datastorage”
并確保你的包/存儲庫在你的 GOPATH 和正確的目錄中(go 對你如何做到這一點非常挑剔)
使用包名稱引用您的函數,如下所示:
func main(){ DataStorage.PrintStr() }
另一張海報是正確的,因為 go 約定是將包名稱保持小寫。
- 3 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消