Fmt包

fmt标准库学习测试

fmt.Print系列
输出到终端,
fmt.Sprint系列
输出到变量,实际就是拼接字符串
fmt.Fprint系列
输出到文件
fmt.Scan系列
从标准输入读取
fmt.Fscan系列
从文件中读取
fmt.Sscan系列
从字符串中读取

Print系列

向外输出到终端一共有三个函数?fmt.Print()fmt.Printf()fmt.Println()

fmt.Print

fmt.Print()原样输出字符串,不带换行符。

func main() {
    fmt.Print("aa")
    fmt.Print("aa")
}

输出四个连续的没有分割的一串字符:

aaaa
也可以手动加上换行符\n,主要这里是反斜杠\

func main() {
    fmt.Print("二进制\n")
    fmt.Print("二进制显示\n")
}

显示效果如下:

二进制
二进制显示

fmt.Println

gfmt.Println()也是输出字符串,但是结尾自带回车换行符。跟fmt.Print()的区别就是带不带换行符这么一点点。

func main() {
    fmt.Println("aa")
    fmt.Println("aa")
}

运行效果如下:

aa
aa

fmt.Printf

fmt.Printf()这个用的最多,可以使用占位符,末尾不带回车换行符。如下代码占位符%b是二进制显示变量a的数据,占位符%d整数型十进制显示变量a的数据。

func main() {
    a := 0b1100
    fmt.Printf("二进制显示a:%b \n", a)
    fmt.Printf("二进制显示a:%d \n", a)
}

运行效果如下:

二进制显示a:1100
二进制显示a:12

Sprint系列

Sprint

fmt.Sprint()通常用它拼接字符串,他的功能就跟c := "aa" + "bb"一个样。看如下代码:

func main() {
    a := "aa"
    b := "bb"
    c := fmt.Sprint(b, a)
    fmt.Println(c)
}

运行效果:

bbaa

Sprintln

fmt.Sprintln()是在拼接的两个字符串中间加空格。

func main() {
    a := "aa"
    b := "bb"
    c := fmt.Sprintln(b, a)
    fmt.Println(c)
}

运行后输出:

bb aa

Sprintf

fmt.Sprintf()就是拼接字符串是可以使用占位符。如下代码:

func main() {

    a := "圆周率是:%.7f"
    b := 3.1415926
    c := fmt.Sprintf(a, b)
    fmt.Println(c)

}

运行效果如下:

圆周率是:3.1415926

Scan系列

Scan

fmt.Scan()官方说法叫从标准输入扫描文本。说白了就是从终端,命令行获取你输入的文本。fmt.Scan()是检测到回车或者空格就算分隔,你指定几个变量接收就扫描几次。比如下面的例子中,先输入啊啊回车,在输入18回车,在输入1回车和直接输入啊啊 18 1回车得到的结果一样。看下例:

func main() {
    var (
        name string
        age  int
        ok   bool
    )
    fmt.Scan(&name, &age, &ok)
    fmt.Printf("name:[%s] age:[%d],ok:[%t]\n", name, age, ok)
}

这里是直接根据变量的内存地址去修改数据。去掉’&’不能正常运行。

Scanf

fmt.Scanf()一样也是用空格分割,用回车结束。不一样的地方是它会用你指定的格式去读取输入的数据。如下代码:

func main() {
    var (
        name string
        age  int
        ok   bool
    )
    fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &ok)
    fmt.Printf("name:[%s] age:[%d],ok:[%t]\n", name, age, ok)
}

如果单纯的输入啊啊 18 ture程序根本扫描不到输入的数据,必须要按你指定的格式1:哦哦 2:30 3:true才能扫描到输入的数据。

Scanln

fmt.Scanln()一般用的最多。这个跟Scan的区别是,只要见到回车就当做你输入完毕了。都是用空格分隔。

func main() {
    var (
        name string
        age  int
        ok   bool
    )
    fmt.Scanln(&name, &age, &ok)
    fmt.Printf("name:[%s] age:[%d],ok:[%t]\n", name, age, ok)
}

  转载请注明: So Cold Fmt包

 上一篇
GO语言函数 GO语言函数
函数是组织好的、可重复使用的、用于执行指定任务的代码块。Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义:func 函数名 (参数1 数据类型, 参数2 ...数据类型) (返回值1 数据类型, 返回值2
2020-05-17
下一篇 
Time包 Time包
time包学习练习测试时间类型:time.Time获取当前时间对象time.Now(),然后就可以通过这个时间对象获得详细的时间信息了,包括年月日时分秒等信息。 func main() { //初始化一个新的时间对象 now
2020-05-04
  目录