Rumah >pembangunan bahagian belakang >Golang >Cara Menukar Nilai Kebenaran dengan betul dalam os.FileMode untuk Go
Memahami os.FileMode Function dalam Go: Menukar Kebenaran daripada Integer
Fungsi os.FileMode dalam Go membolehkan pembangun menetapkan bendera kebenaran fail . Walau bagaimanapun, soalan telah timbul tentang cara ia mengendalikan penukaran kebenaran daripada integer, nombor perlapanan dan format lain.
Pada asalnya dilaporkan sebagai pepijat kebenaran yang melibatkan nilai perpuluhan dan perlapanan, isu asas berpunca daripada format asas input nombor. Go merawat semua input kepada os.FileMode sebagai integer, tanpa mengira sebarang awalan atau pemformatan.
Untuk menjelaskan, memanggil os.FileMode(700) tidak menghasilkan tafsiran oktal tetapi mengekalkan nilai integer 700. Walaupun jangkaan daripada kebenaran '--w-rwxr--' (274 dalam perlapanan), hasil sebenar ialah '--w-r-xr--' (254 dalam perlapanan).
Untuk menangani perkara ini, sentiasa nyatakan integer sebagai nilai perlapanan dengan meletakkan awalannya dengan 0. Dalam contoh di bawah, os.FileMode(0700) menetapkan kebenaran dengan betul seperti yang dijangkakan: '-rwx------' (700 dalam perlapanan).
Sebagai alternatif, menukar nilai perpuluhan 700 kepada perlapanan secara manual menggunakan kod berikut:
<code class="go">mode := uint(0) // 0 is the octal separator mode |= 1 << 6 // read permission for owner mode |= 1 << 5 // write permission for owner mode |= 1 << 3 // execute permission for owner fmt.Println(os.FileMode(mode).String()) // Output: -rwx------</code>
Dokumen go menyerlahkan bahawa jenis FileMode ialah uint32, dengan sembilan LSB mewakili kebenaran fail dan 12 bit teratas menunjukkan ciri fail khas . Menggunakan nilai perpuluhan dalam os.FileMode tanpa pemisah perlapanan utama boleh mencetuskan gelagat yang tidak dijangka disebabkan oleh tafsiran asas.
Oleh itu, untuk mengelakkan kekeliruan dan memastikan tetapan kebenaran yang betul, sentiasa ikut garis panduan ini:
Atas ialah kandungan terperinci Cara Menukar Nilai Kebenaran dengan betul dalam os.FileMode untuk Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!