当前位置: 首页 > news >正文

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二进制表示
%cUnicode 对应字符
%d十进制表示
%o八进制表示
%x十六进制表示(小写字母)
%X十六进制表示(大写字母)
%UUnicode 格式输出
%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常量变量命名规则

  1. 变量名必须由数字,字母,下划线_组成
  2. 标识符开头不能是数字
  3. 标识符不能是保留字和关键字(var、if、for等)
  4. 变量的名字是严格区分大小写的,name、Name、NAme以及NAME是不同的四个变量。Go语法支持,但不推荐这样写。
  5. 变量定义尽可能见名思意
  6. 变量名一般采用驼峰命名法。驼峰命名:首字母小写,后续每个单子首字母大写,例如:maxAge。如果是专属名词,例如DNS,IP等,可直接采用大写。

上一篇:Golang学习历程【第一篇 入门】
下一篇:Golang学习历程【第三篇 基本数据类型】


http://www.mrgr.cn/news/80929.html

相关文章:

  • 微信小程序:获取,修改data中的数据(直接取出,通过变量取出)
  • 光谱相机在农业的应用
  • 深入理解 Linux 内核启动流程
  • 对golang的io型进程进行off-cpu分析
  • 常 用 类
  • SmartX分享:SMTX ZBS 中 RDMA 技术简介
  • aosp15 - App冷启动
  • 编译原理复习---基本概念+推导树
  • 云计算HCIP-OpenStack01
  • 滴滴的logicFlow流程图组件
  • 通过smem 定时检测系统内存占用情况
  • uniapp Native.js 调用安卓arr原生service
  • Ubuntu 上传项目到 GitHub
  • windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网
  • 我在广州学 Mysql 系列——有关 Mysql 函数的练习
  • Mysql语法之DQL查询的多行函数
  • Linux文件属性 -- 查看文件命令
  • jvm符号引用和直接引用
  • 操作系统如何管理进程所用的资源
  • 编译原理复习---正则表达式+有穷自动机
  • 机器学习探索之旅:开启智能预测的新篇章!!! 笔记 ! ! !)
  • UE5 移植Editor或Developer模块到Runtime
  • *【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数
  • FFmpeg库之ffplay
  • 2024.2 ACM Explainability for Large Language Models: A Survey
  • 计算机组成原理的学习笔记(2)--数据表示与运算·其二 逻辑门和加减乘