Go语言不支持直接监听USB插拔事件,但是可以使用第三方库来实现。
一个常用的第三方库是 github.com/warthog618/gpiod
,它提供了一个高级API,可以通过GPIO引脚来控制和监听设备的插拔。
这是一个使用该库实现的示例代码:
package main
import (
"fmt"
"github.com/warthog618/gpiod"
)
func main() {
c, err := gpiod.NewChip("gpiochip0")
if err != nil {
fmt.Println(err)
return
}
defer c.Close()
line, err := c.RequestLine(4, gpiod.AsInput)
if err != nil {
fmt.Println(err)
return
}
defer line.Close()
evtCh := make(chan gpiod.LineEvent)
line.Listen(gpiod.EdgeBoth, evtCh)
for {
evt := <-evtCh
fmt.Printf("GPIO line %d changed to %d\n", evt.Line(), evt.Value())
}
}
该代码监听了GPIO引脚4,并在该引脚发生变化时打印相应消息。请注意,您需要有足够的权限才能访问GPIO引脚,并且需要根据实际情况调整代码以适应您的系统。