Maison >développement back-end >Golang >Comment implémenter la fonctionnalité « getchar() » de C pour la saisie d'un seul caractère, y compris la tabulation, dans Go ?

Comment implémenter la fonctionnalité « getchar() » de C pour la saisie d'un seul caractère, y compris la tabulation, dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 16:01:13378parcourir

How to Implement C's `getchar()` Functionality for Single Character Input, Including Tab, in Go?

Obtenir la saisie de caractères Semblable à getchar() de C dans Go

La fonction getchar() de C permet aux utilisateurs de saisir un seul caractère à partir de la console. Cependant, dans Go, il n’existe pas d’équivalent direct pour gérer les pressions sur les tabulations. Cela peut être difficile lors du développement d'applications console avec des fonctionnalités de saisie semi-automatique.

Go Equivalent

Une alternative possible dans Go consiste à utiliser bufio.Reader. Voici un exemple :

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {

    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('\n')

    fmt.Printf("Input Char Is : %v", string([]byte(input)[0]))
}

Bien que bufio.Reader puisse lire un seul caractère, il nécessite que l'utilisateur appuie sur Entrée pour saisir le caractère. Pour détecter une pression sur une tabulation, cela ne convient pas.

Considérations supplémentaires

Pour ce besoin spécifique, getchar() de C n'est pas approprié car il attend que l'utilisateur appuie sur Entrée. Au lieu de cela, les options alternatives incluent :

  • Utiliser les liaisons ncurses/readline (par exemple, goncurses)
  • Développer votre propre gestionnaire d'entrée
  • Exécuter des commandes externes (par exemple, stty) en utilisant os.Exec

Références :

  • [Discussion des groupes Google sur getchar()](https://groups.google.com/forum /?fromgroups=#!topic/golang-nuts/zhBE5MH4n-Q)
  • [Utilisation bufio.Reader](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/S9AO_kHktiY)
  • [Pack ReadLine](https://groups.google.com /forum/?fromgroups=#!topic/golang-nuts/icMfYF8wJCk)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn