我在golang中使用了“ html”和“ golang.org/x/net/html”。
同名错误,所以我这样命名其他名字。
net_html "golang.org/x/net/html"
我也尝试过这样
_ "golang.org/x/net/html"
但这对我没有效果。
你知道如何解决这个问题吗?
答案 0 :(得分:2)
使用_ "golang.org/x/net/html"
导入软件包,但切断了对它的所有访问权限,仅在需要导入的软件包执行一些初始化且仅执行其他操作时使用。
可以使用net_html "golang.org/x/net/html"
,在这种情况下,正是您应该这样做。如果仍然出现“将html重新声明为导入的软件包...” 错误,则说明您使用的IDE可能存在问题,但通常Go编译器不会抱怨,您的代码应该运行没有问题。
要亲自查看它在正常环境下是否可以运行,请转到以下链接并尝试运行该程序,您将看到它已编译并执行。 https://play.golang.com/p/jRdWucKjQ_0
这是一个与您得到的错误类型相同的版本。 https://play.golang.com/p/H5AFpXKJOBy
因此,如果net_html "golang.org/x/net/html"
无法解决“重新声明为导入包的html ...”错误,请尝试提供有关您的环境的更多信息,例如您使用的IDE ,您已安装的Go的版本等。
答案 1 :(得分:1)
如您所见,当您使用多个具有相同名称的软件包时,Go会抱怨导入的软件包名称之前已经声明过。
为避免此问题,您必须像这样使用自定义PackageName
导入软件包:
import (
"html"
xhtml "golang.org/x/net/html"
)
然后,您可以通过golang.org/x/net/html
来访问xhtml
中的公共方法和结构,如下所示:
package main
import (
"html"
xhtml "golang.org/x/net/html"
)
func main() {
// this will use `html` package
htmlEscape := html.EscapeString("< &")
// and this will use `golang.org/x/net/html` package
xHtmlEscape := xhtml.EscapeString("< &")
}
有关更多详细信息,您可能需要检查Go spec。