亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何調用包內未導出的函數?

如何調用包內未導出的函數?

Go
烙印99 2023-08-14 14:56:33
我正在嘗試編寫一個可以使用的包。這是示例代碼:package redisimport (    "fmt"    "github.com/gomodule/redigo/redis"    "log"    "os")var conn redis.Connfunc init() {    // code to set conn variable}func do(command string, args ...interface{}) (interface{}, error) {    init()    return conn.Do(command, args)}這段代碼無法編譯,編譯器說undefined: init。當我更改init()它時Init(),它可以工作,但我不希望它在包之外可用。無論我在哪里讀到這個問題,它都會說從另一個包調用未導出的函數,但在這里我從同一個包調用它。此外,Goland IDE 將函數調用標記為unresolved reference并建議創建它。但是當我這樣做時(通過 IDE 本身),它仍然看不到它。
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

init() 是一個特殊函數。從語言規范來看:

函數初始化() { … }

每個包可以定義多個這樣的函數,甚至在單個源文件中也是如此。在 package 塊中,init 標識符只能用于聲明 init 函數,而標識符本身并未聲明。因此,不能從程序中的任何地方引用 init 函數。

用于init()包級初始化。


查看完整回答
反對 回復 2023-08-14
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

在 Go 中,init保留用于初始化需要在包中完成的工作,例如。向某些注冊表添加一些實現。

要解決這個問題,需要使用另一個名稱。

查看完整回答
反對 回復 2023-08-14
  • 2 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號