Проанализируйте SMBIOS сами и хешируйте его к произвольной длине. Посмотрите спецификация PDF для всех доступных структур SMBIOS.
Для запросов информации SMBIOS из Windows Вы могли использовать EnumSystemFirmwareEntries
, EnumSystemFirmwareTables
и GetSystemFirmwareTable
.
IIRC, "уникальный идентификатор" из инструкции CPUID удерживается от использования от P3 и более новый.
Я сделал это специально для вас:
package main
import (
"fmt";
"os"
)
func main() {
for i, arg := range os.Args {
if arg == "-help" {
fmt.Printf ("I need somebody\n")
}else if arg == "-version" {
fmt.Printf ("Version Zero\n")
} else {
fmt.Printf("arg %d: %s\n", i, os.Args[i])
}
}
}
см. Также https://play.golang.org/p/XtNXG-DhLI
Тест:
$ ./8.out -help -version monkey business I need somebody Version Zero arg 3: monkey arg 4: business
Используйте пакет 'flag': http://golang.org/pkg/flag/ . Однако он не использует аргументы с двойным тире. Нет ничего, что точно имитировало бы поведение GNU getopt (пока.)