gpt4 book ai didi

go - 如何在包内调用未导出的函数?

转载 作者:行者123 更新时间:2023-12-01 22:42:29 25 4
gpt4 key购买 nike

我正在尝试编写一个可以使用的程序包。这是示例代码:

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)
}

该代码不会编译,编译器会显示 undefined: init。当我将 init()更改为 Init()时,它可以工作,但是我不希望它在软件包外部可用。
无论我在哪里读到此问题,它都涉及从另一个程序包调用未导出的函数,但是在这里,我是从同一程序包调用它的。

另外,Goland IDE将函数调用标记为 unresolved reference并建议创建它。但是当我这样做(通过IDE本身)时,它仍然看不到。

最佳答案

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

要解决此问题,您需要使用其他名称。

如果您有兴趣,请查看this question以了解有关init的更多信息。

关于go - 如何在包内调用未导出的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59315614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com