В Go можно использовать пакет "github.com/eiannone/keyboard" для считывания нажатий клавиш с клавиатуры, включая стрелки. Пакет keyboard позволяет легко обрабатывать события нажатия и отпускания клавиш и читать нажатые клавиши с помощью функций-обратных вызовов.
Вот пример кода, который считывает нажатие стрелок с клавиатуры:
Код
package main
import (
"fmt"
"os"
"github.com/eiannone/keyboard"
)
func main() {
// Инициализация пакета клавиатуры
if err := keyboard.Open(); err != nil {
panic(err)
}
defer func() {
_ = keyboard.Close()
}()
fmt.Println("Нажмите стрелку влево, стрелку вправо или Esc для выхода...")
for {
char, key, err := keyboard.GetKey()
if err != nil {
panic(err)
}
if key == keyboard.KeyArrowLeft {
fmt.Println("Стрелка влево нажата")
} else if key == keyboard.KeyArrowRight {
fmt.Println("Стрелка вправо нажата")
} else if key == keyboard.KeyEsc {
fmt.Println("Выход")
break
}
if char == 'q' || char == 'Q' {
fmt.Println("Выход")
break
}
}
}
Этот код открывает консоль и ждет нажатия стрелки влево, стрелки вправо или клавиши "Esc" для выхода. Когда нажата соответствующая клавиша, выводится соответствующее сообщение, и программа продолжает ожидать новых нажатий клавиш. Если нажата клавиша "q" или "Q", программа также завершается.
На MacOS можно использовать пакет "github.com/nsf/termbox-go" для считывания нажатий клавиш с консоли, включая стрелки. Этот пакет предоставляет набор функций для работы с терминалом, включая считывание нажатых клавиш.
Код
package main
import (
"fmt"
"log"
"os"
"github.com/nsf/termbox-go"
)
func main() {
err := termbox.Init()
if err != nil {
log.Fatal(err)
}
defer termbox.Close()
fmt.Println("Нажмите стрелку влево, стрелку вправо или Esc для выхода...")
for {
switch ev := termbox.PollEvent(); ev.Type {
case termbox.EventKey:
switch ev.Key {
case termbox.KeyArrowLeft:
fmt.Println("Стрелка влево нажата")
case termbox.KeyArrowRight:
fmt.Println("Стрелка вправо нажата")
case termbox.KeyEsc:
fmt.Println("Выход")
os.Exit(0)
}
}
}
}
Этот код использует пакет termbox-go для инициализации терминала и считывания событий клавиш. В цикле он ожидает нажатия стрелки влево, стрелки вправо или клавиши "Esc". Когда нажата соответствующая клавиша, выводится соответствующее сообщение. Если нажата клавиша "Esc", программа завершается с кодом выхода 0.