初心是记录和总结,自己学习Go语言的历程。如果能帮助到你,这是我的荣幸。
为什么要学习终端输出?
因为在程序中,不光是Debug来对程序进行调试,输出内容到控制台也往往是个常用的调试过程。
常用的控制台输出
注意,go语言是一种 静态强类型语言。其中静态:是指变量在定义时要严格指定其类型,在其之后的使用中类型不再变化
强类型: 是指编程语言如何处理运算过程中的值。当值的类型不符合运算规则时,编程语言究竟是做出一些猜测,临时转换值的类型以帮助人们解决问题,还是停止运行,提醒人们不应该这样做。例如:
fmt.Print(1+"s")
,这在go语言中是会报错的,因为它并没有做全转成字符串的处理,而go语言也不会临时转换值,它会抛出一个错误。
1. fmt.Print
直接输出内容,输出多个内容可以用逗号隔开,使用多个fmt.Print
内容会出现在一行中,没有换行。
fmt.Println(123, "嘻嘻哈哈11aa")
// 123嘻嘻哈哈11aa
2. fmt.Println
直接输出内容(再自带一个换行符),多个fmt.Println
输出的内容会以换行符隔开
fmt.Println(123, "嘻嘻哈哈11aa")
// 123 嘻嘻哈哈11aa
3. fmt.printf
格式化输出,格式化的意思是,先使用占位符,后填写内容,看个例子:
fmt.Printf("%d,%s", 123, "嘻嘻哈哈11aa")
这个例子中,%d
表示占位的是一个数字型;%s
表示占位的是一个字符串。
占位的符号与实际值按照顺序对应。
附表
占位符 | 含义 | |
---|---|---|
%s | 字符串 | |
%p | 输出指针 | |
%f | 输出浮点型 | |
%b | 整型以二进制方式显示 | |
%o | 整型以八进制方式显示 | |
%d | 整型以十进制方式显示 | |
%x | 整型以十六进制方式显示 | |
%X | 整型以十六进制、字母大写方式显示 |
终端输出对我们调试代码来说非常重要,除了使用fmt的输出api,我们还可以使用Go语言的log,进行日志的输出。关于Log的内容,待我真正用到时再分享给大家。
进制转换
为什么突然写进制转换呢?这是因为项目实际中尤其对硬件设备输入时会需要搭配终端输出(进制转换)以及进制转换后的结果保存
上面我们了解到了使用格式化控制进制输出,现在我们了解一下如何将进制转换的结果保存。
十进制 - > X 进制
使用的包:strconv
API语法:func FormatInt(i int64, base int) string
- i 表示传入的数值(整型)
- base 表示转成的进制
str2 := strconv.FormatInt(123, 2) // 转二进制
str8 := strconv.FormatInt(123, 8) // 转八进制
str10 := strconv.FormatInt(123, 10) // 转十进制
str16 := strconv.FormatInt(123, 16) // 转十六进制
fmt.Println(str2)
fmt.Println(str8)
fmt.Println(str10)
fmt.Println(str16)
/* 输出
1111011
173
123
7b
*/
X 进制 -> 十进制
使用的包:strconv
API语法:func ParseUint(s string, base int, bitSize int) (uint64, error)
其中 int
就是表示 s
这个是什么编码,输出的结果就是十进制内容
s := "173"
if parseUint, err := strconv.ParseUint(s, 8, 32); err != nil {
panic(err)
} else {
fmt.Println(parseUint)
}
//输出
//123