Golang 基础(六)输入

Overview

  • fmt.Scan
    • 输入,不换行,并且若定义多个值,则必须输入指定个数的值才会结束,否则持续等待
  • fmt.Scanln
    • 输入并换行,以回车结束
  • fmt.Scanf
    • 格式化输入
  • os.stdin
    • 系统输入,在系统中,终端输入都会写入到os.stdin中,则可以读取os.stdin中的一行值

Description

1)fmt.Scan

package main

import "fmt"

func main() {
	var name string
	fmt.Print("Please enter your name: ")
	fmt.Scan(&name)
	fmt.Println(name)
}

2)fmt.Scanln

package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Print("Please enter your name and age: ")
	fmt.Scan(&name, &age)
	fmt.Println(name, age)
}

 3)fmt.Scanf

格式化输出必须按照模板进行输出,然后才会提取Scan中的值,否则无法输出结果

package main

import "fmt"

func main() {
	var name string
	fmt.Print("Please enter your name and age: ")
	fmt.Scanf("我的名字是%s", &name)
	fmt.Println(name)
}

 若在字符串占位符后有其他一样类型的数据,则无法读取出指定的值,所以在Go中占位符后需要加一个空格来完善

错误例子:

package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Print("Please enter your name: ")
	fmt.Scanf("我的名字是%s我今年%d了", &name, &age)
	fmt.Println(name, age)
}

 正确例子:

package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Print("Please enter your name: ")
	fmt.Scanf("我的名字是%s 我今年%d了", &name, &age)
	fmt.Println(name, age)
}

 4)os.Stdin

在fmt.Scanln中,每一个空格都代表了是一个内容的结束,所以是无法按照有空格的形式输入一行内容,比如My name is Jeremy

因此可以使用os.stdin来输入一行终端输入的内容并加以输出(os.Stdin是标准输入,终端输入的内容都会在这个文件中

package main

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

func main() {
	Reader := bufio.NewReader(os.Stdin)
	line, isPrefix, err := Reader.ReadLine()
	fmt.Println(string(line))
	fmt.Println(isPrefix)
	fmt.Println(err)
}

bufio.NewReader(bufio.NewReader的功能是读取os.Stdin中的数据):

        bufio.NewReader(os.Stdin)

从bufio.NewReader中读取的内容,需要定义变量给予赋值:

        变量:= bufio.NewReader(os.Stdin)

我们需要的是读一行,读一行在这里使用的是Readline:   

        变量.Readline

 Readline默认有3个变量:line,isPrefix,err, 我们需要将line输出:

        line,isPrefix,err := 变量.Readline()

line需要以string进行输出fmt.Println(string(line)

        fmt.Println(string(line)

package main

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

func main() {
	Data := bufio.NewReader(os.Stdin)
	line, _, _ := Data.ReadLine()
	fmt.Println(string(line))
}

 不想输出esPrefix和err可以用_来占位

Golang 基础(七)条件句-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值