导入错误:带有html的golang.org/x/net/html

I'm using "html" and "golang.org/x/net/html" in golang.

enter image description here

It's got error by same name.So I named other name like this.

net_html "golang.org/x/net/html"

and also I tried like this

_ "golang.org/x/net/html"

But it wasn't effect for me.

Do you know how to solve this problem?

Using _ "golang.org/x/net/html" you import the package but you cut-off all access to it, this is used only when you need the imported package to perform some initialization and nothing else.

Using net_html "golang.org/x/net/html" is ok and is exactly what you should do in this case. If you're still getting the "html redeclared as imported package ..." error then there might be an issue with the IDE you are using, but generally the Go compiler will not complain and your code should run without problems.

To see for yourself that it works in a normal environment go to the following link and try running the program and you'll see that it compiles and executes. https://play.golang.com/p/jRdWucKjQ_0

And here's a version with the same kind of error as the one that you're getting. https://play.golang.com/p/H5AFpXKJOBy


So if net_html "golang.org/x/net/html" doesn't fix the "html redeclared as imported package ..." error, then try providing more info about your environment, like what IDE you're using, what version of Go you've installed, etc.

When you use multiple package with same name, as you've experienced, Go will complain that the imported package name has been declared before.

To avoid this issue, you have to import the package with custom PackageName like this :

import (
    "html"
    xhtml "golang.org/x/net/html"
)

Then you can use public methods and structs from golang.org/x/net/html by accessing it via xhtml like this :

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("< &")
}

For more detail, you might want to check the Go spec.