Heim >Backend-Entwicklung >Golang >Wie erhalte ich mit Go eine Liste aller Laufwerke auf einem Windows-System?
Laufwerksliste unter Windows mit Go abrufen
Um automatisch nach Dateien auf allen Laufwerken eines Windows-Systems zu suchen, ist es notwendig, eine Liste abzurufen aller Laufwerke mit Go. Die Programmiersprache Go bietet Funktionen für die Interaktion mit der Windows-API und ermöglicht die Aufzählung logischer Laufwerke.
Lösung
Die Lösung besteht im Aufruf der GetLogicalDrives-Funktion aus dem Kernel32. DLL-Bibliothek. Diese Funktion gibt eine Bitmap zurück, die die verfügbaren Laufwerke angibt. Durch die Verarbeitung dieser Bitmap können wir die Laufwerksbuchstaben erhalten, die den verfügbaren Laufwerken entsprechen:
<code class="go">import ( "fmt" "syscall" ) func main() { kernel32, _ := syscall.LoadLibrary("kernel32.dll") getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives") var drives []string if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 { // handle error } else { drives = bitsToDrives(uint32(ret)) } fmt.Printf("%v", drives) } func bitsToDrives(bitMap uint32) (drives []string) { availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} for i := range availableDrives { if bitMap&1 == 1 { drives = append(drives, availableDrives[i]) } bitMap >>= 1 } return }</code>
Die Funktion bitsToDrives wandelt die Bitmap in ein Array von Laufwerksbuchstaben um und die Hauptfunktion ruft fmt.Printf( ), um die Liste der Laufwerke auszudrucken. Mit diesem Code können Sie dynamisch nach Dateien auf allen verfügbaren Laufwerken suchen, ohne dass Benutzereingaben für Laufwerksbuchstaben erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie erhalte ich mit Go eine Liste aller Laufwerke auf einem Windows-System?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!