複数のプラットフォームにわたる Go の空きディスク容量の取得
この記事では、空きサイズと合計サイズを動的に取得するソリューションを検討します。オペレーティング システム (Windows、Linux、Mac) に関係なく、Go を使用したストレージ ボリューム。このソリューションにより、df -h などの外部コマンドや手動計算が不要になります。
POSIX ベースのシステムの場合、sys.unix.Statfs 関数を利用して Statfs_t 構造体にアクセスします。たとえば、現在の作業ディレクトリの空き領域をバイト単位で取得するには、次のようにします。
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 の場合、syscall アプローチを採用します。新しい sys/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 の空きディスク領域を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。