>  기사  >  백엔드 개발  >  Golang에서 입력을 닫는 방법

Golang에서 입력을 닫는 방법

PHPz
PHPz원래의
2023-04-05 09:11:17861검색

Golang은 입력 및 출력을 처리할 때 유용한 내장 기능을 많이 제공하는 인기 있는 프로그래밍 언어입니다. 어떤 경우에는 프로그램에 대한 사용자 입력을 비활성화하고 싶을 수도 있습니다. 이 글에서는 Golang에서 입력을 끄는 방법을 설명합니다.

왜 입력을 꺼야 하나요?

일부 애플리케이션에서는 입력의 정확성과 보안을 보장해야 합니다. 예를 들어 일부 기밀 정보를 입력하거나 프로그램 논리에 영향을 미치는 데이터를 입력합니다. 이러한 경우, 우리는 프로그램의 입력 소스를 제한하고 입력의 정확성을 보장할 수 있기를 원합니다.

Golang에서 입력을 닫는 방법은 무엇입니까?

Golang에서는 입력을 닫는 방법이 여러 가지 있습니다. 아래에서는 이러한 방법 중 두 가지를 소개합니다.

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 입력을 닫는 두 가지 방법입니다. 어떤 경우에는 사용자 입력을 비활성화해야 할 수도 있습니다. 이러한 방법을 사용하면 프로그램의 정확성과 안전성을 보장하는 데 도움이 될 수 있습니다.

물론, 항상 입력을 끌 필요는 없습니다. 구체적인 상황은 적용 시나리오에 따라 결정되어야 합니다.

위 내용은 Golang에서 입력을 닫는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.