如何使用Untar内置的golang(golang.org/x/build/internal/untar)

时间:2019-01-11 17:23:45

标签: go tar

这似乎是一个非常简单的问题,但是对于我的一生,我无法弄清楚。

我要做的就是解压缩并提取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()

}

1 个答案:

答案 0 :(得分:3)

不能。带有internal as part of their name的软件包不能被同一仓库外的任何软件包使用。换句话说,golang.org/x/build/internal/untar仅适用于golang.org/x/build,并且编译器不允许您从其他任何地方引用它。

如果愿意,可以将该软件包的源复制到一个新文件中,然后从那里使用它,但是不能直接使用它。这样,内部untar软件包的开发人员就可以完全自由地中断其界面,而不必担心其他用户。