Golangで入力を閉じる方法

PHPz
リリース: 2023-04-05 10:14:08
オリジナル
877 人が閲覧しました

Golang は、入出力を処理する際に多くの便利な組み込み関数を提供する人気のあるプログラミング言語です。場合によっては、プログラムへのユーザー入力を無効にしたい場合があります。この記事では、Golang で入力をオフにする方法を説明します。

なぜ入力をオフにする必要があるのでしょうか?

一部のアプリケーションでは、入力の正確性とセキュリティを確保する必要があります。たとえば、機密情報を入力したり、プログラム ロジックに影響を与えるデータを入力したりします。このような場合、プログラムの入力ソースを制限し、入力の正確性を保証できるようにしたいと考えています。

Golang で入力を閉じるにはどうすればよいですか?

Golang では、入力を閉じる方法がいくつかあります。そのうちの 2 つの方法を以下に紹介します。

1. os.Stdin.Close() 関数を使用する

Golang では、os.Stdin はプログラムの標準入力ストリームを表す非常に便利な組み込み変数です。この変数を閉じると、プログラムは標準入力ストリームからデータを読み取ることができなくなります。

os.Stdin.Close() 関数を使用して、プログラムの標準入力を閉じます。

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("input your name:")
    var name string
    _, err := fmt.Scanln(&name)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println("Hello", name)

    os.Stdin.Close()//关闭标准输入
    fmt.Scanln()//此时将不能再输入
}
ログイン後にコピー

2. bufio.Reader 構造で io.EOF フラグを使用する

Golang の bufio.Reader 構造は、入力を閉じるメソッドも提供します。具体的には、入力を読み込む際に入力が終了したかどうかを確認し、入力が終了した場合には入力をクローズし、それ以上のデータ入力を禁止することができます。

package main

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

func main() {
    fmt.Println("input your name:")
    var name string
    reader := bufio.NewReader(os.Stdin)
    for {
        line, err := reader.ReadString('\n')
        if line == "\n" {
            fmt.Println("Name:", name)
            break
        }
        if err == nil {
            name += line
        } else if err.Error() == "EOF" {
            fmt.Println("Name:", name)
            break
        }
    }
    reader = nil
}
ログイン後にコピー

上記のコードでは、bufio.NewReader() 関数を使用して bufio.Reader オブジェクトを作成し、その ReadString() メソッドを使用して入力を読み取ります。

各読み取りの後、エラーが io.EOF であるかどうかを確認します。そうであれば、入力が終了したことを意味し、入力を閉じることができます。

概要

上記は、Golang 入力を閉じる 2 つの方法です。場合によっては、ユーザー入力を無効にする必要があるかもしれません。これらの方法を使用すると、プログラムの正確性と安全性を確保できます。

もちろん、必ずしも入力をオフにする必要はなく、アプリケーションのシナリオに応じて具体的な状況を判断する必要があります。

以上がGolangで入力を閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート