你可以使用 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
}