Как в приложение на golang вставить другой бинарник?

Пользователь

от raina , в категории: Golang , 8 месяцев назад

Как в приложение на golang вставить другой бинарник?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jorge , 8 месяцев назад

@raina 

Если вы хотите вставить другой бинарник в приложение на Golang, вы можете воспользоваться встроенным пакетом embed.


Вот пример кода для вставки бинарного файла в приложение:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main

import (
	"embed"
	"io"
	"log"
	"os"
	"path/filepath"
)

//go:embed other_binary/binfile.bin
var binfile embed.FS

func main() {
	err := extractBinFile("binfile.bin", "./path/to/save/binfile.bin")
	if err != nil {
		log.Fatal(err)
	}
}

func extractBinFile(filename, savePath string) error {
	file, err := binfile.Open(filename)
	if err != nil {
		return err
	}
	defer file.Close()

	outputFile, err := os.Create(savePath)
	if err != nil {
		return err
	}
	defer outputFile.Close()

	_, err = io.Copy(outputFile, file)
	if err != nil {
		return err
	}

	log.Printf("Binary file '%s' extracted to '%s'", filename, savePath)
	return nil
}


В этом примере мы используем директиву //go:embed для встроенного пакета embed, чтобы указать на встраиваемый бинарный файл other_binary/binfile.bin. Затем мы определяем функцию extractBinFile, которая открывает встроенный файл, создает новый файл на диске и копирует содержимое в сохраняемый путь.


Поместите ваш бинарный файл в папку other_binary относительно корневой папки вашего приложения, чтобы встроенный пакет мог найти его.


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