当前位置:主页 > 脚本语言 > Golang >

Go语言标准输入输出库的基本使用教程

时间:2022-06-05 11:19:49 | 栏目:Golang | 点击:

fmt

fmt是go语言中的格式化输入输出库,其中主要分为两个部分,分别是输出部分和输入部分。

输出

Print

Print函数的主要功能是输出,和Print类似的函数有以下几个:

代码示例:

func main() {
	a := "Lee"
	fmt.Print("大家好,")
	fmt.Printf("我是:%s \n",a)
	fmt.Println("我在学习Go语言")
}

运行结果:

常用占位符:

Fprint

Fprint系列函数同样有以下三个,该函数会将内容输出到io.Writer接口类型的变量w中,通常用于朝文件中写入数据。

代码示例:

func main() {
	file, err := os.OpenFile("D://test/a.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("打开文件出错:", err)
		return
	}
	name := "lee"
	age := 23
	// 向文件中写入数据
	fmt.Fprintf(file, "姓名:%s,年龄:%d \n", name, age)
	// 向控制台写入数据
	fmt.Fprintf(os.Stdout, "写入成功")
}

运行结果:

以上代码成功将内容写入到了a.txt文件中。

Sprint

Sprint会将传入的内容格式化成一个字符串并返回,和Sprint类似的函数有以下几个:

代码示例:

func main() {
	a := "Lee"
	s1 := fmt.Sprint("直接返回")
	s2 := fmt.Sprintln("自动换行返回")
	s3 := fmt.Sprintf("格式化返回:%s", a)
	fmt.Print(s1)
	fmt.Print(s2)
	fmt.Print(s3)
}

运行结果:

Errorf

Errorf是根据传入的内容格式化后返回一个包含该字符串的error。

func Errorf(format string, a ...interface{}) error 

代码示例:

func main() {
	a := "error"
	error := fmt.Errorf("错误:%s", a)
	fmt.Print(error)
}

运行结果:

输入

在go语言中获取控制台输入可以使用以下几个函数:

func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error) 

Scan

Scan从标准输入读取文本,以空格符或换行符为分隔,将读取到的内容赋值给函数的参数,函数返回成功读取到的数据个数和遇到的错误。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scan(&name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

Scanf

Scanf根据format参数指定的格式去读取由空白符分隔的值保存到函数的参数中。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scanf("name=%s age=%d", &name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

使用Scanf进行输入时,需要完整的在控制台输入函数中指定的格式,例如上述代码中指定的格式为name=%s age=%d,则在输入时就必须使用该格式,如果还是和之前的Scan中一样只输入lee 23是读取不到内容的。

Scanln

Scanln类似于Scan,但是不同的是使用Scanln时只要输入了换行之后就会停止读取。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scanln(&name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

例如上述的输入中,如果仅仅只是输入了姓名就换行,那么就会停止读取,但是在Scan中,如果输入姓名后换行不会停止读取还需要继续输入年龄后才会停止读取。

总结

您可能感兴趣的文章:

相关文章