Pencapaian Ruang Cakera Merentas Platform dalam Go
Dalam artikel ini, kami menangani cabaran untuk mendapatkan maklumat ruang cakera percuma, meliputi Windows, Platform Linux dan Mac menggunakan bahasa pengaturcaraan Go.
Masalah Pernyataan
Matlamatnya adalah untuk meniru output perintah Unix df -h yang digunakan secara meluas, yang memberikan butiran tentang ruang storan percuma dan jumlah untuk volum. Fungsi ini mesti disesuaikan dengan sistem pengendalian yang pelbagai dan dilaksanakan dalam Go.
Penyelesaian
Sistem POSIX (Linux, Mac)
Pada sistem berasaskan POSIX (sistem pengendalian seperti Unix seperti Linux dan Mac), pakej sys.unix.Statfs ialah dimanfaatkan. Pakej ini mengandungi fungsi Statfs, yang mengembalikan struktur data yang mewakili statistik sistem fail. Coretan kod berikut menunjukkan penggunaannya:
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))
Sistem Windows
Untuk sistem Windows, pakej syscall menyediakan akses kepada panggilan sistem Windows. Coretan kod berikut menunjukkan penggunaannya:
import "golang.org/x/sys/windows" var freeBytesAvailable uint64 var totalNumberOfBytes uint64 var totalNumberOfFreeBytes uint64 err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"), &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes)
Pakej Merentas Platform
Berdasarkan penyelesaian yang disediakan, pengguna digalakkan untuk membangunkan pakej merentas platform yang merangkum fungsi ini. Pakej ini harus mengasingkan pelaksanaan asas khusus platform dan menyediakan antara muka yang konsisten untuk mendapatkan maklumat ruang cakera kosong tanpa mengira sistem pengendalian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Maklumat Ruang Cakera Percuma Merentasi Windows, Linux dan macOS Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!