Mengakses ID Kumpulan Fail (GID) dalam Go
Dalam Go, fail boleh ditanya untuk metadatanya menggunakan os.Stat() fungsi, yang mengembalikan objek FileInfo. Objek ini memberikan maklumat tentang fail, termasuk saiz, masa penciptaan dan kebenarannya. Walau bagaimanapun, mendapatkan ID Kumpulan (GID) fail boleh mencabar kerana sifat legap kaedah Sys() objek FileInfo.
Kaedah Sys() mengembalikan nilai Antara Muka{} yang tidak mempunyai sebarang pendedahan kaedah. Walaupun mungkin untuk mencetak nilai Sys() untuk memeriksanya, GID tidak boleh diakses secara langsung.
Penyelesaian
Untuk mengatasi had ini, kita boleh menggunakan reflect modul untuk menentukan jenis sebenar yang mendasari nilai Sys(). Pada Linux, maklumat yang bergantung kepada sistem yang dikembalikan oleh Sys() biasanya disimpan dalam struct syscall.Stat_t.
<code class="go">import ( "fmt" "os" "reflect" "syscall" ) func main() { file_info, _ := os.Stat(abspath) file_sys := file_info.Sys() file_sys_t := reflect.ValueOf(file_sys).Elem() gid := file_sys_t.FieldByName("Gid").String() fmt.Println("File GID:", gid) }</code>
Dengan menghantar nilai file_sys ke struct *syscall.Stat_t, kami mendapat akses kepada struct tersebut. medan, termasuk medan Gid yang mengandungi ID kumpulan berangka.
Nota:
Penyelesaian ini khusus untuk Linux, kerana maklumat yang bergantung kepada sistem dikembalikan oleh Sys( ) boleh berbeza-beza merentas sistem pengendalian. Untuk penyelesaian mudah alih, anda boleh需要使用第三方库或更低级的系统调用来获取文件的 GID。
Atas ialah kandungan terperinci Bagaimana untuk Mengakses ID Kumpulan Fail (GID) dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!