我正在尝试编写一个包来使用。这是示例代码:
package redis
import (
"fmt"
"github.com/gomodule/redigo/redis"
"log"
"os"
)
var conn redis.Conn
func init() {
// code to set conn variable
}
func do(command string, args ...interface{}) (interface{}, error) {
init()
return conn.Do(command, args)
}
Run Code Online (Sandbox Code Playgroud)
这段代码不编译,编译器说undefined: init。当我改变init()到Init()它的工作原理,但我不希望它是封装外提供。无论我在哪里读到这个问题,它都说从另一个包调用未导出的函数,但在这里我从同一个包调用它。
此外,Goland IDE 将函数调用标记为unresolved reference并建议创建它。但是当我这样做时(通过 IDE 本身),它仍然没有看到它。
init() 是一个特殊的函数。从语言规范:
func init() { ... }
即使在单个源文件中,每个包也可以定义多个这样的函数。在 package 块中,init 标识符只能用于声明 init 函数,而标识符本身并没有声明。因此不能从程序中的任何地方引用 init 函数。
使用init()程序包级别初始化。
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |