Heim >Backend-Entwicklung >Golang >Wie kann man die Terminalgröße in Go effizient ermitteln?

Wie kann man die Terminalgröße in Go effizient ermitteln?

Linda Hamilton
Linda HamiltonOriginal
2024-12-17 09:28:24914Durchsuche

How to Efficiently Get Terminal Size in Go?

Terminalgröße mit Go ermitteln

Eine häufige Aufgabe bei der Shell-Programmierung ist das Ermitteln der Größe des Terminalfensters. Diese Informationen sind nützlich, um die Ausgabe zu formatieren oder Benutzeroberflächen zu erstellen. In Go besteht ein Ansatz darin, den Befehl stty zu verwenden, um die Terminalgröße abzurufen. Diese Methode kann jedoch problematisch sein, da sie einen neuen Prozess erzeugt, der nicht mit dem aktuellen TTY zusammenhängt.

Um dieses Problem zu beheben, sollten Sie die Verwendung des Terminalpakets im Paket golang.org/x/crypto/ssh in Betracht ziehen . Dieses Paket stellt eine GetSize-Funktion bereit, die die Terminalgröße einfach abruft. So verwenden Sie es:

package main

import (
    "fmt"
    "golanger.org/x/crypto/ssh/terminal"
    "os"
)

func main() {
    width, height, err := terminal.GetSize(int(os.Stdin.Fd()))
    if err != nil {
        fmt.Println("Error getting terminal size:", err)
    } else {
        fmt.Printf("Width: %d Height: %d\n", width, height)
    }
}

Die terminal.GetSize-Funktion verwendet einen Dateideskriptor als Eingabe. Eine häufige Wahl hierfür ist os.Stdin.Fd(), das den Eingabestream des aktuellen Terminals darstellt. Die Funktion gibt die Breite und Höhe des Terminals in Zeichen zurück. Durch die Verwendung des Terminalpakets können Sie die Terminalgröße für den aktuellen Prozess genau ermitteln, was es zu einer geeigneteren Lösung macht als die Ausführung des Befehls stty.

Das obige ist der detaillierte Inhalt vonWie kann man die Terminalgröße in Go effizient ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn