I'm using "html" and "golang.org/x/net/html" in golang.
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.