ホームページ >バックエンド開発 >Golang >Go を使用して Windows、Linux、macOS の空きディスク容量情報を取得するにはどうすればよいですか?

Go を使用して Windows、Linux、macOS の空きディスク容量情報を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-16 19:16:12541ブラウズ

How Can I Get Free Disk Space Information Across Windows, Linux, and macOS Using Go?

Go でのクロスプラットフォームのディスク領域の取得

この記事では、Windows をカバーする空きディスク領域情報を取得するという課題に取り組みます。 Go プログラミング言語を使用する Linux および Mac プラットフォーム。

問題ステートメント

目的は、広く使用されている Unix コマンド df -h の出力を複製することです。このコマンドは、ボリュームの空きストレージ容量と合計ストレージ容量の詳細を提供します。この機能は、さまざまなオペレーティング システムに適応でき、Go で実装される必要があります。

ソリューション

POSIX システム (Linux、Mac)

POSIX ベースのシステム (Linux や Mac などの Unix 系オペレーティング システム) では、 sys.unix.Statfs パッケージが利用されます。このパッケージには、ファイル システム統計を表すデータ構造を返す Statfs 関数が含まれています。次のコード スニペットは、その使用法を示しています。

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

var stat unix.Statfs_t

wd, err := os.Getwd()

unix.Statfs(wd, &stat)

// Available blocks * size per block = available space in bytes
fmt.Println(stat.Bavail * uint64(stat.Bsize))

Windows システム

Windows システムの場合、syscall パッケージは Windows システム コールへのアクセスを提供します。次のコード スニペットは、その使用法を示しています。

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

var freeBytesAvailable uint64
var totalNumberOfBytes uint64
var totalNumberOfFreeBytes uint64

err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"),
    &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes)

クロスプラットフォーム パッケージ

提供されたソリューションに基づいて、ユーザーはクロスプラットフォーム パッケージを開発することが推奨されます。この機能をカプセル化します。このパッケージは、基盤となるプラットフォーム固有の実装を抽象化し、オペレーティング システムに関係なく空きディスク領域情報を取得するための一貫したインターフェイスを提供する必要があります。

以上がGo を使用して Windows、Linux、macOS の空きディスク容量情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。