>  기사  >  백엔드 개발  >  Go 언어에서 스캔 방법의 용도는 무엇입니까?

Go 언어에서 스캔 방법의 용도는 무엇입니까?

青灯夜游
青灯夜游원래의
2021-03-15 16:46:586557검색

go 언어에서는 Scan() 메서드를 사용하여 표준 입력 "os.Stdin"에서 텍스트를 읽습니다. 즉, 터미널에서 데이터를 가져옵니다. 이 메소드는 성공적으로 읽은 데이터 수와 발생한 오류를 반환합니다. 읽은 데이터 수가 제공된 매개변수보다 적으면 오류 보고 이유가 반환됩니다.

Go 언어에서 스캔 방법의 용도는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

Scan 시리즈

Go 언어 fmt 패키지에는 fmt.Scan, fmt.Scanf, fmt. 에는 프로그램 실행 중에 표준 입력에서 사용자 입력을 얻을 수 있는 세 가지 기능이 있습니다. fmt包下有fmt.Scanfmt.Scanffmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。

fmt.Scan

语法

func Scan(a ...interface{}) (n int, err error)
  • Scan从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scan(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端依次输入小明18false使用空格分隔。

$ ./scan_demo 
小明 18 false
扫描结果 name:小明 age:18 married:false

fmt.Scan从标准输入中扫描用户输入的数据,将以空白符分隔的数据分别存入指定的参数。

fmt.Scanf

语法

func Scanf(format string, a ...interface{}) (n int, err error)
  • Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端按照指定的格式依次输入小明、18false。

$ ./scan_demo 
1:小明 2:18 3:false
扫描结果 name:小明 age:18 married:false

fmt.Scanf不同于fmt.Scan简单的以空格作为输入数据的分隔符,fmt.Scanf为输入数据指定了具体的输入内容格式,只有按照格式输入数据才会被扫描并存入对应变量。

例如,我们还是按照上个示例中以空格分隔的方式输入,fmt.Scanf就不能正确扫描到输入的数据。

$ ./scan_demo 
小明 18 false
扫描结果 name: age:0 married:false

fmt.Scanln

语法

func Scanln(a ...interface{}) (n int, err error)
  • Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanln(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端依次输入小明18false使用空格分隔。

$ ./scan_demo 
小明 18 false
扫描结果 name:小明 age:18 married:false

fmt.Scanln

fmt.Scan

구문

rrreee
  • Scan은 표준 입력에서 텍스트를 스캔하고 공백에서 읽어옵니다. - 구분된 값은 이 함수에 전달된 인수에 저장되며 줄 바꿈은 공백 문자로 처리됩니다.
  • 이 함수는 성공적으로 스캔된 데이터 수와 발생한 오류 수를 반환합니다. 읽은 데이터 수가 제공된 매개변수보다 적으면 오류 보고 이유가 반환됩니다.

코드 예

rrreee위 코드를 컴파일하고 터미널에서 실행해보세요. Xiao Ming , 18false는 공백으로 구분됩니다. rrreeefmt.Scan은 표준 입력에서 사용자가 입력한 데이터를 스캔하고 공백 문자로 구분된 데이터를 지정된 매개변수에 저장합니다. 🎜

🎜fmt.Scanf🎜

구문

rrreee
  • Scanf는 표준 입력에서 텍스트를 스캔합니다. format 매개변수로 지정된 형식은 공백으로 구분된 값을 읽어 이 함수에 전달된 매개변수에 저장합니다.
  • 이 함수는 성공적으로 스캔된 데이터 수와 발생한 오류 수를 반환합니다.

코드 예

rrreee🎜위 코드를 컴파일하고 터미널에서 실행해보세요. 터미널에 Xiao Ming, 를 입력하세요. 지정된 형식 18false에 따라 순서를 지정합니다. 🎜rrreee🎜fmt.Scanf는 단순히 공백을 입력 데이터의 구분 기호로 사용하는 fmt.Scanf와는 다릅니다. > 입력 데이터에는 특정 입력 내용 형식이 지정됩니다. 해당 형식에 따라 입력된 데이터만 스캔되어 해당 변수에 저장됩니다. 🎜🎜예를 들어 이전 예와 같이 여전히 공백으로 구분된 형식으로 데이터를 입력하는 경우 fmt.Scanf는 입력 데이터를 올바르게 스캔할 수 없습니다. 🎜rrreee

🎜fmt.Scanln🎜

구문

rrreee
  • Scanln은 Scan과 유사하며, 개행. 마지막 데이터 뒤에는 줄 바꿈이 있어야 하며, 그렇지 않으면 끝 위치에 도달해야 합니다.
  • 이 함수는 성공적으로 스캔된 데이터 수와 발생한 오류 수를 반환합니다.

코드 예

rrreee🎜위 코드를 컴파일하고 터미널에서 실행해 보세요. Xiao Ming을 입력하세요. code>18 및 false는 공백으로 구분됩니다. 🎜rrreee🎜fmt.Scanln은 캐리지 리턴이 발생하면 스캔을 종료합니다. 이 방법이 더 일반적으로 사용됩니다. 🎜🎜추천 학습: 🎜Golang 튜토리얼🎜🎜

위 내용은 Go 언어에서 스캔 방법의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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