如何使用golang内置的Untar (golang.org/x/build/internal/untar)
How to use golang's built in Untar (golang.org/x/build/internal/untar)
这似乎是一个非常简单的问题,但对于我来说我无法弄清楚。
我只想解压并提取 tar.gz 文件的内容。在 godoc 上,似乎有一个函数的引用正是这样做的。 (https://godoc.org/golang.org/x/build/internal/untar)。
虽然没有示例,但我似乎无法弄明白。更糟糕的是,我什至不知道如何访问该函数。
现在我有:
package main
import (
"io"
"os"
//???
)
func main() {
f, err := os.Open("foo.tar.gz")
if err != nil {
panic(err)
}
defer f.Close()
var freader io.ReadCloser = f
err = untar.Untar(freader, ".") // <- Compiler doesn't recognize
if err != nil {
panic(err)
}
freader.Close()
}
你不能。带有 internal as part of their name 的包不能被同一存储库之外的任何包使用。换句话说,golang.org/x/build/internal/untar
仅适用于 golang.org/x/build
,编译器不允许您从其他任何地方引用它。
如果您真的愿意,可以将该包的源代码复制到一个新文件中,然后从那里使用它,但您不能直接使用它。这使内部解压包的开发人员可以完全自由地破坏他们的界面,而不必担心其他用户。
这似乎是一个非常简单的问题,但对于我来说我无法弄清楚。
我只想解压并提取 tar.gz 文件的内容。在 godoc 上,似乎有一个函数的引用正是这样做的。 (https://godoc.org/golang.org/x/build/internal/untar)。
虽然没有示例,但我似乎无法弄明白。更糟糕的是,我什至不知道如何访问该函数。
现在我有:
package main
import (
"io"
"os"
//???
)
func main() {
f, err := os.Open("foo.tar.gz")
if err != nil {
panic(err)
}
defer f.Close()
var freader io.ReadCloser = f
err = untar.Untar(freader, ".") // <- Compiler doesn't recognize
if err != nil {
panic(err)
}
freader.Close()
}
你不能。带有 internal as part of their name 的包不能被同一存储库之外的任何包使用。换句话说,golang.org/x/build/internal/untar
仅适用于 golang.org/x/build
,编译器不允许您从其他任何地方引用它。
如果您真的愿意,可以将该包的源代码复制到一个新文件中,然后从那里使用它,但您不能直接使用它。这使内部解压包的开发人员可以完全自由地破坏他们的界面,而不必担心其他用户。