你可以使用 linux 包来发挥你的优势。


例如,您可以使用icoextract,它可以通过 apt 安装:


apt install icoextract

然后像这样运行它:


icoextract /path/to/file.exe /path/to/file.ico

Go 使调用命令并使用包执行它们成为可能os/exec。所以你可以做类似的事情


func ExtractIcon(executablePath string) []byte {

    file, err := ioutil.TempFile("dir", "prefix")

    if err != nil {

        log.Fatal(err)

    }

    defer os.Remove(file.Name())

    cmd := exec.Command("icoextract", executablePath, file.Name())

    if err = cmd.Run(); err != nil {

        log.Fatal(err)

    }


    content, _ := ioutil.ReadFile(file.Name())

    return content

}