Как использовать встроенный в Untar Голанг (golang.org/x/build/internal/untar) - PullRequest
0 голосов
/ 11 января 2019

Это кажется очень простой проблемой, но я не могу этого понять.

Все, что я хочу сделать, это разархивировать и извлечь содержимое файла tar.gz. На Годоке, кажется, есть ссылка на функцию, которая делает именно это. (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 голосов
/ 11 января 2019

Вы не можете. Пакеты с внутренним как часть их имени не могут использоваться ни одним пакетом вне того же репо. Другими словами, golang.org/x/build/internal/untar только для golang.org/x/build, и компилятор не позволит вам ссылаться на него где-либо еще.

Вы можете, если вам действительно нравится, скопировать исходный код этого пакета в новый файл и использовать его оттуда, но вы не можете использовать его напрямую. Это дает разработчикам внутреннего пакета untar полную свободу ломать их интерфейс, не беспокоясь о других пользователях.

...