Go语言 - fmt包 | 输出 | 占位符

在Go中,同一个文件夹下的.go文件可以理解为是在同一包下,这些.go文件的首行代码:package 包名 是一样的(包都存放在GOPATH的src文件夹下)

//在同一个包下,变量,函数,都不能重复定义
//在包内定义的函数如果是小写字母开头,表示只能在包内部使用
//在外部包想使用,函数名必须首字母大写

mypackage1/foo1.go

package mypackage  //通常情况下,包名就是文件夹名,在同一个文件夹下,包名必须一致

func test(a,b int) int{
    return a+b
}

mypackage1/foo2.go

package mypackage

import "fmt"

func Test1()  {
    fmt.Println(test(1,2))   
    fmt.Println("xxxx")  
}

mypackage2/foo3.go

// 包的使用
package main

import "mypackage"
import "fmt"

func main() {
    //想使用mypackage包下的test函数和test1函数
    mypackage.Test1()
    fmt.Println("xxx")
}

 

fmt包

fmt标准库是我们在学习Go语言过程中接触最早最频繁的一个了,本文介绍了fmtb包的一些常用函数。

fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。

向外输出

标准库fmt提供了以下几种输出相关函数

  • Print

Print系列函数会将内容输出到系统的标准输出

package main

import "fmt"

func main()  {
    var s1 = "上海"
    fmt.Print(s1, "\n") // 上海  (默认不含换行)
}
  • Printf

Printf函数支持格式化输出字符串

package main

import "fmt"

func main()  {
    var s1 = "上海"
    fmt.Printf("地址:%s \n", s1)  // 地址:上海  (默认不含换行)
}
  • Println

Println函数会在输出内容的结尾添加一个换行符

package main

import "fmt"

func main()  {
    var s1 = "上海"
    fmt.Println(s1)  // 上海  (默认含换行)
}

格式化占位符

printf系列函数都支持format格式化参数,在这里我们按照占位符将被替换的变量类型划分,方便查询和记忆。

通用占位符

占位符说明
%v 值的默认格式表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的Go语法表示
%T 打印值的类型
%% 百分号
func main()  {
    // 占位符
    var a = 100
    var b = "上海"
    var c = true
    fmt.Println(a, b, c)
    // %v
    fmt.Printf("a: %v", a)  // a: 100
    fmt.Printf("b: %v", b)  // b: 上海
    fmt.Printf("c: %v", c)  // c: true
    // %T
    fmt.Printf("a的类型是:%T", a)  // a的类型是:int
    fmt.Printf("b的类型是:%T", b)  // b的类型是:string
    fmt.Printf("c的类型是:%T", c)  // c的类型是:bool
    // %%转义
    fmt.Printf("%d%%", a)  // 100%
}

布尔型

占位符说明
%t true或false

整型

占位符说明
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于”U+%04X”
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示

示例代码如下:

n := 65
fmt.Printf("%b\n", n)
fmt.Printf("%c\n", n)
fmt.Printf("%d\n", n)
fmt.Printf("%o\n", n)
fmt.Printf("%x\n", n)
fmt.Printf("%X\n", n)

输出结果如下:

1000001
A
65
101
41
41

浮点数与复数

占位符说明
%b 无小数部分、二进制指数的科学计数法,如-123456p-78
%e 科学计数法,如-1234.456e+78
%E 科学计数法,如-1234.456E+78
%f 有小数部分但无指数部分,如123.456
%F 等价于%f
%g 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

示例代码如下:

f := 12.34
fmt.Printf("%b\n", f)
fmt.Printf("%e\n", f)
fmt.Printf("%E\n", f)
fmt.Printf("%f\n", f)
fmt.Printf("%g\n", f)
fmt.Printf("%G\n", f)

输出结果如下:

6946802425218990p-49
1.234000e+01
1.234000E+01
12.340000
12.34
12.34

 

 

posted @ 2019-11-24 13:26  waller  阅读(668)  评论(0编辑  收藏  举报