Golang学习历程【第二篇 fmt包变量、常量的定义】
Golang学习历程【第二篇 fmt包&变量、常量的定义】
- 1. fmt 包
- 1.1 打印(print)
- 1.1.1 Print 打印
- 1.1.2 Println 打印后换行
- 1.1.3 Printf 打印格式化参数
- 1.2 输入(Scan)
- 1.2.1 Scan 输入
- 1.2.2 Scanf 格式化输入
- 2. 变量
- 2.1 变量的声明
- 2.2 变量初始化,赋值
- 2.2 声明多个变量
- 2.3 匿名变量
- 3. 常量
- 3.1 常量的声明
- 3.2 iota 自增长
- 4. 总结:Go常量变量命名规则
前言:包是指由官方或者自定义的一系列功能集合体。使用前需要先引入,例如今日所讲的fmt包。引入方式如下:
import "fmt"
1. fmt 包
fmt 包是一个非常重要且广泛使用的标准库包,它提供了格式化I/O(输入/输出)功能,类似于C语言中的 printf 和 scanf。通过这个包,你可以读取输入并将数据格式化输出到标准输出或其他写入器(writers)
1.1 打印(print)
打印功能,简单来说就是系统输出功能,英文简义为Print,驼峰命名,首字母大写,后缀ln换行含义。后缀f表示可格式化打印
1.1.1 Print 打印
// package 包声明: 可以理解为一个文件夹
package main// import 导入:一般指导入官方或自定义功能包
import "fmt"// main函数 入口函数
func main() {/*** 打印输出功能*/fmt.Print('C') // 打印字符,单引号,语法灵活易学fmt.Print("a") // 打印字符串fmt.Print("Hello World") // 打印字符串,双引号fmt.Print(123) // 打印整数fmt.Print(3.1415926) // 打印小数fmt.Print(true) // 打印布尔值
}
上述结果:
67aHello World1233.1415926true
总结:Print仅打印功能,可打印任意类型,细心的朋友可能发现,单引号字符串
'C'
输出结果为67,单引号代表单个字符,输出的结果是ASCII值,双引号表示打印字符串。如果使用'ABC'
。运行结果会报错more than one character in rune literal
。中文意思是:符文文字中有多个字符。
1.1.2 Println 打印后换行
上述代码如果使用Println 打印,代码如下:
注:以下代码以后只显示关键代码段,main函数不予展示。
fmt.Println('C') // 打印字符,单引号,语法灵活易学
fmt.Println("a") // 打印字符串
fmt.Println("Hello World","你好") // 打印字符串,双引号
fmt.Println(123) // 打印整数
fmt.Println(3.1415926) // 打印小数
fmt.Println(true) // 打印布尔值
效果清晰明了,如下:
67
a
Hello World 你好
123
3.1415926
true
1.1.3 Printf 打印格式化参数
可指定格式打印。常用格式类型如下:
格式化符号 | 描述 | 重要程度(个人观点) |
---|---|---|
%T | 打印变量类型 | 高 |
%v | 以默认格式输出变量 | 高 |
%t | 输出 true 或 false | 高 |
%b | 二进制表示 | 高 |
%c | Unicode 对应字符 | 低 |
%d | 十进制表示 | 高 |
%o | 八进制表示 | 高 |
%x | 十六进制表示(小写字母) | 高 |
%X | 十六进制表示(大写字母) | 低 |
%U | Unicode 格式输出 | 低 |
%f | 十进制浮点数 | 高 |
%e | 科学计数法(小写 e) | 低 |
%E | 科学计数法(大写 E) | 低 |
%g | 自动选择 %f 或 %e 的简洁表示 | 高 |
%s | 普通字符串 | 高 |
%q | 带双引号的字符串或字符 | 低 |
%p | 指针地址 | 低 |
示例代码:
fmt.Printf("布尔值:%t \n", false) // 打印布尔值
fmt.Printf("Unicode 65对应字符:%c \n", 65) // Unicode 对应字符
fmt.Printf("默认格式65:%v \n", 65) // 二进制打印
fmt.Printf("二进制65:%b \n", 65) // 二进制打印
fmt.Printf("十进制65:%d \n", 65) // 十进制打印
fmt.Printf("八进制65:%o \n", 65) // 八进制打印
fmt.Printf("十六进制1024(小):%x \n", 1024) // 十六进制小写打印
fmt.Printf("十六进制1024(大):%X \n", 1024) // 十六进制大写打印
fmt.Printf("'C' Unicode值:%U \n", 'C') // Unicode输出
fmt.Printf("浮点数:%f \n", 3.1415926) // 十进制浮点数
fmt.Printf("科学计数法(小):%e \n", 3.1415926) // 科学计数法(小写 e)
fmt.Printf("科学计数法(大):%E \n", 3.1415926) // 科学计数法(大写 e)
运行结果:
布尔值:false
Unicode 65对应字符:A
默认格式65:65
二进制65:1000001
十进制65:65
八进制65:101
十六进制1024(小):400
十六进制1024(大):400
'C' Unicode值:U+0043
浮点数:3.141593
科学计数法(小):3.141593e+00
科学计数法(大):3.141593E+00
1.2 输入(Scan)
输入用Scan表示,后缀f表示格式化输入
1.2.1 Scan 输入
示例:
// 基本变量声明:var <变量名> <类型>
var name string // 声明字符串类型
var age int // 声明整数类型
fmt.Print("请输入姓名和年龄:")
fmt.Scan(&name, &age) // 录入姓名和年龄
fmt.Printf("name=%s,age=%d \n", name, age) // 格式化输出姓名和年龄
运行结果:
请输入姓名和年龄:张三 18
name=张三,age=18
1.2.2 Scanf 格式化输入
示例:
// 基本变量声明:var <变量名> <类型>var name string // 声明字符串类型var age int // 声明整数类型fmt.Print("请输入姓名和年龄:")fmt.Scanf("%s %d", &name, &age)fmt.Printf("name=%s,age=%d \n", name, age)
运行如下示例,体验到:Go语言灵活多变,适合0基础学习
PS F:\go_project> go run main.go
请输入姓名和年龄:张三
name=张三,age=0
PS F:\go_project> go run main.go
请输入姓名和年龄:张三 18
name=张三,age=18
PS F:\go_project> go run main.go
请输入姓名和年龄:张三 李四
name=张三,age=0
PS F:\go_project> go run main.go
请输入姓名和年龄:张三 李四 18
name=张三,age=0
PS F:\go_project> go run main.go
请输入姓名和年龄:张三 18 李四
name=张三,age=18
PS F:\go_project> go run main.go
请输入姓名和年龄:18 张三
name=18,age=0
PS F:\go_project>
2. 变量
变量,存储数据的容器,可以存放任何数据值。变量名由字母、数字、下划线组成,数字不能开头。Go中的关键字和保留字不能作为变量名
2.1 变量的声明
声明变量,指的是定义变量
总共有以下几种方式:
// var <变量名> <数据类型>
var a string
// var <变量名>=<值>
var b = "张三"
fmt.Printf("a=%v,b=%v", a, b) // a没有赋值,默认为空
结果:
a=,b=张三
默认初始值测试:
var a string // 字符串,默认为空
var b int // 整型,默认为0
var c bool // 布尔值,默认为false
var d float32 // 浮点类型,默认为0
fmt.Printf("a=%v, b=%v, c=%v, d=%v", a, b, c, d) // a没有赋值,默认为空
结果
a=, b=0, c=false, d=0
提示:Go语言中变量声明必须使用,否则会报错提示
declared and not used
,意思是声明了并没有使用
2.2 变量初始化,赋值
// 变量初始化声明的三种方式
// 1.1 先声明变量 格式: var <变量名> <变量类型>
var name string
// 1.2 后赋值 格式:<变量名> = <值>
name = "张三"
// 2. 声明的同时进行赋值 格式:var <变量名> = <值>
var age = 18
// 3.短变量声明法 格式:<变量名> := <值>
sex := "男"
score := 80
fmt.Print(name, age, sex, score)
结果:
张三18男80
2.2 声明多个变量
// 1. 一次声明相同类型 var <变量名1>,<变量名2>... <数据类型>
var a1, a2, a3 string
a1 = "张三"
a2 = "李四"
a3 = "王五"
fmt.Println(a1, a2, a3)
/** 2. 先声明,后赋值var (<变量名1> <数据类型><变量名2> <数据类型>...)
*/
var (name stringage int
)
name = "赵六"
age = 20
fmt.Println(name, age)
/*3. 声明即赋值var (<变量名1> = <值><变量名2> = <值>...)
*/
var (num1 = 1num2 = 2
)
fmt.Println(num1, num2)
// 4. 短变量声明法 <变量名1>,<变量名2>,<变量名3> := <值1>,<值2>,<值3>
num3, num4, num5 := 3, 4, "Hello"
fmt.Println(num3, num4, num5)
结果:提示:Println具有加空格及换行功能
张三 李四 王五
赵六 20
1 2
3 4 Hello
var声明可用于全局定义使用,短变量声明只能用于局部变量。
2.3 匿名变量
匿名变量顾名思义没有变量名,一次性接收,用_表示
示例:
package mainimport "fmt"// 先举示例,函数的定义后续学习讲解
func getUserInfo() (string, int) {return "zhangsan", 10
}// main函数 入口函数
func main() {// var声明接收var name, age = getUserInfo()fmt.Println(name, age)// _匿名变量,用于丢弃赋值var _, age1 = getUserInfo()fmt.Println(age1)var name1, _ = getUserInfo()fmt.Println(name1)
}
结果:
zhangsan 10
10
zhangsan
匿名变量不占用命名空间,可以重复使用,但是var,:=声明的变量名称不可重复
3. 常量
变量是可以修改,变更的值,而常量是不可改变的值,用const声明
3.1 常量的声明
// const 定义一个常量 * 最常用const A = "TEST1"fmt.Println(A)// 定义多个常量const (B = "TEST2"C = "TEST3"D = "TEST4")fmt.Println(B, C, D)// 定义多个常量,给定一个值const (E = "TEST5"FG // 值默认与上一个相同H = "TEST6"I // 值默认与上一个相同)fmt.Println(E, F, G, H, I)
结果:
TEST1
TEST2 TEST3 TEST4
TEST5 TEST5 TEST5 TEST6 TEST6
3.2 iota 自增长
iota为Go中的计数器,常与const结合使用
示例:
// iota 计数器使用
const (n1 = iota // 0n2 // 1_ // 匿名跳过计数n3 // 3n4 = iota // 4n5 // 5n6 = 100 // 100 插队赋值n7 = iota // 7n8, n9, n10 = iota, iota, iota + 1 // 8,8,9 多变量声明iota不会计数叠加,
)
fmt.Println(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10)
结果:
0 1 3 4 5 100 7 8 8 9
4. 总结:Go常量变量命名规则
- 变量名必须由数字,字母,下划线_组成
- 标识符开头不能是数字
- 标识符不能是保留字和关键字(var、if、for等)
- 变量的名字是严格区分大小写的,name、Name、NAme以及NAME是不同的四个变量。Go语法支持,但不推荐这样写。
- 变量定义尽可能见名思意
- 变量名一般采用驼峰命名法。驼峰命名:首字母小写,后续每个单子首字母大写,例如:maxAge。如果是专属名词,例如DNS,IP等,可直接采用大写。
上一篇:Golang学习历程【第一篇 入门】
下一篇:Golang学习历程【第三篇 基本数据类型】