Go语言--语法基础5--基本数据类型--输入输出(2)
2、输出语句
Print 系列函数会将内容输出到系统的标准输出,
func Print(a ...interface{}) (n int, err error)
//一般输出,不带格式
func Printf(format string, a ...interface{}) (n int, err error) //格式化输出
func Println(a ...interface{}) (n int, err error) //换行输出
区别在于
Print 函数直接输出内容,
Printf 函数支持格式化输出字符串,
Println 函数会在输出内容的结尾添加一个换行符。
第一个:print
注意:不需要引用任何的包或者库,语言自带的:
print—— 最基础,只输出,而且什么都不加
package main
func main() {
print("hllo world (“n")
第二个:Println()
需要包含 fmt 包,并默认在每次输出结尾加入一个换行符。
package main
import "fmt"
func main() {
//print("hello word")
fmt.Println("go","python","c++","java")
}
第三个:Printf输出的各种占位符号:
第一个参数部分的 format string 类型可以选择如下格式:
General
%v 以默认的方式打印变量的值
%T 打印变量的类型,注意:%t 是bool类型输出。
Integer
%+d 带符号的整型,
fmt.Printf("%
+d", 255)输出+255
%q 由引号围绕的字符字面值 a := "aaa" fmt.Printf("%q",
a) // 输出 "aaa"
%o 不带零的八进制 fmt.Printf("%o\n", 65) //101
%#o 带零的八进制 fmt.Printf("%#o\n", 65) //0101
%x 小写的十六进制 fmt.Printf("%x\n", 31) //1f
%X 大写的十六进制 fmt.Printf("%X\n", 31) //1F
%#x 带0x的十六进制 fmt.Printf("%#x\n", 31) //0x1f
%b 打印整型的二进制 fmt.Printf("%b\n", 65) //100
0001
String Width ( 以 5 做例子)
%s 正常字符串原样输出
%5s 最小宽度为5,不足5的时候,左补空格,超过5的时候,原样输出。
%-5s 最小宽度为5(左对齐,右补空格)
%.5s 最大宽度为5,多的部分裁掉,不够的时候原样输出。
%5.7s 最小宽度为5,最大宽度为7
%-5.7s 最小宽度为5,最大宽度为7(左对齐)
%5.3s 如果宽度大于3,则截断
%05s 如果宽度小于5,就会在字符串前面补零
注意: golang 没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符 号的。
宽度与精度的控制格式以 Unicode 码点为单位。宽度为该数值占用区域的最小宽 度;
精度为小数点之后的位数。操作数的类型为 int 时,宽度与精度都可用字符 '*' 表 示。
对于 %g/%G 而言,精度为所有数字的总数,例如: 123.45 , %.4g 会打印 123.5,
(而 %6.2f 会打印 123.45 )。 %e 和 %f 的默认精度为 6 对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格 式化的形式填充空格。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断。
应用案例:
package main
import "fmt"
func main() {
var str string
var person struct {
name string
age int
}
person.name = "老王"
person.age = 50
str = "hello world"
fmt.Println("====一般占位符====")
fmt.Printf("%v\n", str) //hello world
fmt.Printf("%v\n", person) //{老王 50}
fmt.Printf("%+v\n", person) //{name:老王 age:50}
fmt.Printf("%#v\n", str) //"hello world"
fmt.Printf("%#v\n", true) //true
fmt.Printf("%T\n", str) //string
fmt.Printf("%T\n", true) //bool
fmt.Printf("%%\n") //%
fmt.Println("====布尔====")
fmt.Printf("%t\n", true)
fmt.Println("====整数====")
fmt.Printf("%b\n", 65) //1000001
fmt.Printf("%c\n", 65) //A
fmt.Printf("%d\n", 65) //65
fmt.Printf("%o\n", 65) //101
fmt.Printf("%q\n", 65) //'A'
fmt.Printf("%x\n", 31) //1f
fmt.Printf("%X\n", 31) //1F
fmt.Printf("%U\n", 31) //U+001F
fmt.Println("====浮点数及其复合构成====")
fmt.Printf("%b\n", 10.5) //5910974510923776p-49
fmt.Printf("%e\n", 10.5) //1.050000e+01
fmt.Printf("%E\n", 10.5) //1.050000E+01
fmt.Printf("%f\n", 10.5) //10.500000
fmt.Printf("%g\n", 10.5) //10.5
fmt.Printf("%G\n", 10.5) //10.5
fmt.Println("====字符串与字节切片====")
fmt.Printf("%s\n", "abc") //abc
fmt.Printf("%q\n", "abc") //"abc"
fmt.Printf("%x\n", "abc") //616263
fmt.Printf("%X\n", "abc") //616263
fmt.Println("====指针====")
fmt.Printf("%p\n", &str) //0xc0000441f0
}