>백엔드 개발 >Golang >Go를 사용하여 Windows에서 사용 가능한 모든 드라이브를 어떻게 나열합니까?

Go를 사용하여 Windows에서 사용 가능한 모든 드라이브를 어떻게 나열합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 21:15:30403검색

How do I list all available drives in Windows using Go?

Go를 사용하여 Windows에서 모든 드라이브를 나열하는 방법

프로그램에는 검색과 같이 시스템의 다른 드라이브와 상호 작용하는 기능이 필요한 경우가 많습니다. 특정 파일 형식에 대해. 드라이브 문자를 수동으로 지정할 수도 있지만 모든 드라이브를 자동으로 나열하는 것이 더 편리하고 효율적입니다. Go에서는 GetLogicalDrives 기능을 활용하여 이를 수행할 수 있습니다.

드라이브 목록 가져오기

GetLogicalDrives 함수는 사용 가능한 모든 드라이브를 나타내는 비트맵을 반환합니다. 각 비트는 드라이브 문자에 해당합니다.

<code class="go">package main

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>

bitsToDrives() 함수는 비트맵을 드라이브 문자의 문자열 배열로 변환합니다.

드라이브 반복

드라이브 목록을 얻은 후에는 이를 반복하여 파일 검색 등 원하는 작업을 수행할 수 있습니다.

Go를 사용하여 다음 단계를 수행하면 효율적으로 드라이브 목록을 얻을 수 있습니다. Windows의 모든 드라이브를 나열하고 필요에 따라 작업을 수행합니다.

위 내용은 Go를 사용하여 Windows에서 사용 가능한 모든 드라이브를 어떻게 나열합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.