Go语言从入门到精通五——终端读写&文件读写

本文详细介绍了Go语言中的终端读写,包括os.Stdin、os.Stdout和os.Stderr的使用,以及带缓冲区的读写操作。接着,讨论了文件读写,如os.File的用法,os.Open和os.OpenFile的文件操作模式与权限控制。此外,还提到了命令行参数的获取,如os.Args和flag包的解析方法,并通过实例展示了如何实现一个简单的cat命令模拟程序。
摘要由CSDN通过智能技术生成

终端读写

和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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值