目录
知识结构
输入
1.Scan
编辑
2.Scanf
3.Scanln
4.os.Stdin --标准输入,从键盘输入
输出
1.Print
2.Printf
3.Println
知识结构
输入
为了展示集中输入的区别,将直接进行代码演示。
三者区别的结论:Scanf格式化输入;Scanln碰到换行符就退出了;
1.Scan
scan相对于scanln就没有回车键的限制,按回车,只要你的内容没有输入完毕,就会等你输入完:
package main
import "fmt" func main(){var name stringvar passwd stringfmt.Println("请输入用户名和密码:")fmt.Scan(&name, &passwd)fmt.Println(name, passwd)fmt.Println("请输入用户名:")fmt.Scan(&name) //&取地址符fmt.Println("请输入密码:")fmt.Scan(&passwd)fmt.Println(name, passwd)
}
2.Scanf
会进行格式化输入:
package mainimport "fmt"func main() {var name stringvar passwd stringfmt.Println("请输入用户名和密码:")fmt.Scanf("a=%s b=%s", &name, &passwd) //格式化输入fmt.Printf("name is %s,passwd is %s\n", name, passwd) //格式化输出
}
使用Scanf的时候要按照指定的格式输入才可以正确输出:
3.Scanln
package mainimport "fmt"func main() {var name stringvar passwd stringfmt.Scanln(&name, &passwd) //碰到换行符就退出了fmt.Println("name is", name, "passwd is", passwd)
}
什么意思呢?就是再使用Scanln进行输入时,如果你敲回车了,就会判定你已经输入完毕,就会出现上面的错误结果。避免这种错误可以使用空格进行隔开:
综上,scan是最常用的输入命令。
4.os.Stdin --标准输入,从键盘输入
使用bufio包中的os.Stdin也可以进行标准输入:
package mainimport ("bufio""fmt""os"
)
func main() {//窗机哪一个从键盘输入的对象 os.Stdin --标准输入,从键盘输入reader := bufio.NewReader(os.Stdin)content, e := reader.ReadString('\n')//判断e不为空,表示有错误产生if e != nil {fmt.Println("产生错误", e)} else {fmt.Println("获取到的内容:", content)}
}
这段代码中,有两个返回值:content和e,用content接收从键盘输入的内容,e用来判断是否产生错误,如果对e没有什么操作,可以用下划线取代;
e可以判断代码执行是否产生错误:通过判断e是否等于nil来判断,代码执行正确时,e=nil。
输出
三者的重要区别是:Printf可以格式化输出,需要自己加换行符\n;Println输出会自动加换行符,不能格式化输出;Print不会自动添加换行符和分隔符。
举例演示。
1.Print
package main
import "fmt"
func main(){var name stringvar passwd stringfmt.Println("请输入用户名和密码:")fmt.Scanf("a=%s b=%s", &name, &passwd) //格式化输入fmt.Print(name, passwd)
}
这里的输出结果就是:
可以看到,这里的“root”与“123”之间是不会自动出现间隔符的,这就是Print的特点。
2.Printf
Printf在上面输入时也有出现,正如Scanf支持格式化输入一样,Printf支持格式化输出,使用Printf可以让结果按照你想要输出的形式展现。这里也不再详述,上面有例子
3.Println
在介绍输入符的时候使用的基本都是Println,它的特点就是输出之后会自动换行。这里就不再详述。
今天的内容就介绍到这里,如果有问题欢迎留言。