终端读写
和C语言一样,终端分为三类:
- os.Stdin:标准输入
- os.Stdout: 标准输出
- os.Stderr:标准错误输出
终端读写示例
package main
import (
"fmt"
)
var (
firstName, lastName, s string
i int
f float32
input = "56.12 / 5212 / Go"
format = "%f / %d / %s"
)
func main() {
fmt.Println("Please enter your full name: ")
fmt.Scanln(&firstName, &lastName)
// fmt.Scanf("%s %s", &firstName, &lastName)
fmt.Printf("Hi %s %s!\n", firstName, lastName) // Hi Chris Naegels
fmt.Sscanf(input, format, &f, &i, &s)
fmt.Println("From the string we read: ", f, i, s)
}
带缓冲区的读写
package main
import (
"bufio"
"fmt"
"os"
)
var inputReader *bufio.Reader
var input string
var err error
func main() {
inputReader = bufio.NewReader(os.Stdin)
fmt.Println("Please enter some input: ")
input, err = inputReader.ReadString('\n')
if err == nil {
fmt.Printf("The input was: %s\n", input)
}
}
带缓冲区的终端读写 2
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stdout, "%s\n", "hello world! - unbuffered")
buf := bufio.NewWriter(os.Stdout)
fmt.Fprintf(buf, "%s\n", "hello world! - buffered")
buf.Flush()
}
练习,从终端读取一行字符串,统计英文、数字、空格以及其他字符的数量:
package main
import (
"fmt"
"bufio"
"os"
"unicode"
)
func main() {
m := make(map[string] int)
fmt.Println("Please enter some string: ")
buffer := bufio.NewReader(os.Stdin)
s, err := buffer.ReadString('\n')
if err == nil{
for _, v := range ([]rune (s