Rumah >pembangunan bahagian belakang >Golang >Bagaimana Saya Boleh Mendapatkan Ruang Cakera Percuma dalam Merentasi Sistem Pengendalian Berbeza?

Bagaimana Saya Boleh Mendapatkan Ruang Cakera Percuma dalam Merentasi Sistem Pengendalian Berbeza?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 16:59:10650semak imbas

How Can I Get Free Disk Space in Go Across Different Operating Systems?

Mendapatkan Ruang Cakera Percuma dalam Merentasi Pelbagai Platform

Dalam artikel ini, kami meneroka penyelesaian untuk mendapatkan semula saiz percuma dan jumlah keseluruhan secara dinamik volum storan menggunakan Go, tanpa mengira sistem pengendalian (Windows, Linux, Mac). Penyelesaian ini menghapuskan keperluan untuk arahan luaran seperti df -h atau pengiraan manual.

Untuk sistem berasaskan POSIX, kami memanfaatkan fungsi sys.unix.Statfs untuk mengakses struktur Statfs_t. Sebagai contoh, untuk mendapatkan ruang kosong untuk direktori kerja semasa dalam bait:

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))

Dalam kes Windows, kami mengambil pendekatan syscall. Berikut ialah contoh yang dikemas kini menggunakan pakej sys/windows yang lebih baharu:

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

var freeBytesAvailable uint64
var totalNumberOfBytes uint64
var totalNumberOfFreeBytes uint64

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

Jangan teragak-agak untuk melanjutkan contoh ini ke dalam pakej merentas platform untuk penggunaan yang lebih luas. Untuk panduan tentang pelaksanaan merentas platform, rujuk dokumentasi bantuan alat binaan.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Ruang Cakera Percuma dalam Merentasi Sistem Pengendalian Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn