如何使用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,编译器不允许您从其他任何地方引用它。

如果您真的愿意,可以将该包的源代码复制到一个新文件中,然后从那里使用它,但您不能直接使用它。这使内部解压包的开发人员可以完全自由地破坏他们的界面,而不必担心其他用户。