Cara Membuat Instantiate os.FileMode dengan betul
Dalam Go, jenis os.FileMode mewakili bit mod fail yang menentukan kebenaran fail. Beberapa contoh dan tutorial menunjukkan penciptaan fail, tetapi banyak memintas instantiasi os.FileMode yang betul, sebaliknya bergantung pada menetapkan bit kebenaran secara langsung.
Cabaran
Seseorang mencari kaedah untuk membuat instantiate os.FileMode dengan betul, menggunakan nilai UID, GID dan kebenaran yang disediakan yang diwakili sebagai digit perlapanan.
Penyelesaian
Sebagai ganti bergantung pada pemalar yang dipratentukan, perkara berikut boleh digunakan:
const ( OS_READ = 04 OS_WRITE = 02 OS_EX = 01 OS_USER_SHIFT = 6 OS_GROUP_SHIFT = 3 OS_OTH_SHIFT = 0 OS_USER_R = OS_READ << OS_USER_SHIFT OS_USER_W = OS_WRITE << OS_USER_SHIFT OS_USER_X = OS_EX << OS_USER_SHIFT OS_USER_RW = OS_USER_R | OS_USER_W OS_USER_RWX = OS_USER_RW | OS_USER_X OS_GROUP_R = OS_READ << OS_GROUP_SHIFT OS_GROUP_W = OS_WRITE << OS_GROUP_SHIFT OS_GROUP_X = OS_EX << OS_GROUP_SHIFT OS_GROUP_RW = OS_GROUP_R | OS_GROUP_W OS_GROUP_RWX = OS_GROUP_RW | OS_GROUP_X OS_OTH_R = OS_READ << OS_OTH_SHIFT OS_OTH_W = OS_WRITE << OS_OTH_SHIFT OS_OTH_X = OS_EX << OS_OTH_SHIFT OS_OTH_RW = OS_OTH_R | OS_OTH_W OS_OTH_RWX = OS_OTH_RW | OS_OTH_X OS_ALL_R = OS_USER_R | OS_GROUP_R | OS_OTH_R OS_ALL_W = OS_USER_W | OS_GROUP_W | OS_OTH_W OS_ALL_X = OS_USER_X | OS_GROUP_X | OS_OTH_X OS_ALL_RW = OS_ALL_R | OS_ALL_W OS_ALL_RWX = OS_ALL_RW | OS_GROUP_X )
Dengan pemalar ini, kebenaran boleh dinyatakan secara eksplisit:
dir_file_mode := os.ModeDir | (OS_USER_RWX | OS_ALL_R) os.MkdirAll(dir_str, dir_file_mode)
Kaedah ini membolehkan kawalan tepat ke atas kebenaran fail sambil menghapuskan keperluan untuk menetapkan bit kebenaran secara manual.
Atas ialah kandungan terperinci Bagaimana untuk Menghidupkan os.FileMode dalam Go dengan Kebenaran UID, GID dan Octal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!