리눅스 윈도우 다 되는 Golang 프로그램 만들기

1 개요[ | ]

리눅스 윈도우 다 되는 Golang 프로그램
main.go
package main

import (
	"fmt"
)

func main() {
	total, err := GetDiskTotalBytes()
	if err != nil {
		panic(err)
	}
	fmt.Println(total)
}
main_linux.go
//go:build linux
// +build linux

package main

import "golang.org/x/sys/unix"

func GetDiskTotalBytes() (int, error) {
	var stat unix.Statfs_t
	err := unix.Statfs("/", &stat)
	if err != nil {
		return -1, err
	}
	return int(int64(stat.Blocks) * stat.Bsize), nil
}
main_windows.go
//go:build windows
// +build windows

package main

import "golang.org/x/sys/windows"

func GetDiskTotalBytes() (int, error) {
	var free, total, available uint64
	pathPtr, err := windows.UTF16PtrFromString(`C:\`)
	if err != nil {
		return -1, err
	}
	err = windows.GetDiskFreeSpaceEx(pathPtr, &free, &total, &available)
	if err != nil {
		return -1, err
	}
	return int(total), nil
}

2 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}