笔上得来终觉浅,绝知此事要躬行
🔥 个人主页:星云爱编程
🔥 所属专栏:Golang
🌷追光的人,终会万丈光芒
🎉欢迎大家点赞👍评论📝收藏⭐文章
![]()
目录
一、变量
1.1基本介绍
1.2变量的使用
1.3变量使用注意事项
二、数据类型
2.1基本介绍
2.2整数类型
2.2.1基本介绍
2.2.2整数的各个类型
2.2.3使用细节
2.3浮点类型
2.3.1基本介绍
2.3.2浮点类型分类
2.3.3使用细节
2.4字符类型
2.4.1基本介绍
2.4.2使用细节
2.4布尔类型
2.5string类型
2.5.1基本介绍
2.5.2使用细节
2.6基本数据类型的默认值
2.7基本数据类型之间的相互转换
2.7.1基本语法
2.7.2使用细节
2.8基本数据类型和string间的转换
2.8.1基本数据类型转string
2.8.2 string类型转基本数据类型
三、标识符
3.1基本介绍
3.2标识符命名规则
3.3标识符命名注意事项
结语
一、变量
1.1基本介绍
变量是程序的基本组成单位,变量相当于内存中一个数据储存空间的表示。
1.2变量的使用
(1)声明变量
基本语法:var 变量名 数据类型
(2)非变量赋值
(3)使用变量
例如:
package main
import "fmt"func main(){var i int//1定义变量i=10 //2给变量赋值fmt.Printf("i=%d",i)//3使用变量
}
1.3变量使用注意事项
(1)变量表示内存中的一个存储区域,该区域有自己的名称和类型;
(2)Golang变量使用的三种方式:
①指定变量类型,声明后若不赋值,使用默认值
②根据值自行判断变量类型
③省略var,注意:=左边的变量不能是已经声明的,否则会导致编译报错
(3)Golang中可以一次性声明多个变量;
例:
package main
import "fmt"func main(){name ,class,age:="jack","软工1班",19fmt.Printf("name=%v,class=%v,age=%v",name,class,age)}
如何一次性声明多个全局变量:
package main
import "fmt"//定义全局变量
var a int =5
var b float32=3.6
var c string="csdn"
//一次性声明多个全局变量
var (d=5e=7f="big"
)func main(){name ,class,age:="jack","软工1班",19fmt.Printf("name=%v,class=%v,age=%v",name,class,age)}
(4)变量在同一个作用域不能重名;
(5)变量=变量名+值+数据类型,这是变量的三要素;
(6) 变量在声明时如果没有赋值,则会使用默认值,int为0,string默认为空串;
若声明时给变量赋值,则可以省略数据类型,例如:var n=400;
二、数据类型
2.1基本介绍
如上图,go的数据类型非常多,这里我们只讲基本数据类型,复杂数据类型在后面的文章再叙。
2.2整数类型
2.2.1基本介绍
用于存放整数值的类型
2.2.2整数的各个类型
类型 | 有无符号 | 占用存储空间 | 取值范围 |
---|---|---|---|
int8 | 有 | 1byte | -128~127 |
int16 | 有 | 2byte | -2^15~2^15-1 |
int32 | 有 | 4byte | -2^31~2^31-1 |
int64 | 有 | 8byte | -2^63~2^63-1 |
uint8 | 无 | 1byte | 0~255 |
uint16 | 无 | 2byte | 0~2^16-1 |
uint32 | 无 | 4byte | 0~2^32-1 |
uint64 | 无 | 8byte | 0~2^64-1 |
2.2.3使用细节
(1)Golang的整形默认声明为int型
var n=6//n的数据类型为int
(2)在声明int型时,默认为int32类型
var n int =100//这里的int为int32
m:=200
(3)如何查看某个变量的大小和数据类型
var n int=100fmt.Printf("n的数据类型为%T, 大小为%d字节",n,unsafe.Sizeof(n))
(4)Golang程序中,整形变量采用保小不保大的原则,即:在保证程序正常运行的情况下,尽量使用占用空间小的数据类型。
2.3浮点类型
2.3.1基本介绍
浮点类型即小数类型,是用来存放小数的。
2.3.2浮点类型分类
类型 | 占用存储空间 | 表示范围 |
---|---|---|
float32 | 4byte | -3.403E38~3.403E38 |
float64 | 8byte | -1.798E308~1.798E308 |
2.3.3使用细节
(1)Golang浮点类型有固定的范围和字段长度,不受操作系统影响
(2)Golang浮点型默认声明为float64类型
var n=3.14
fmt.Printf("n的数据类型为%T",n)
(3)浮点数在机器中的存放形式:浮点数=符号位+指数位+位数位,故浮点数都是有符号的
(4)浮点数在存储过程中会有精度损失,通常情况下推荐使用float64,因为其更准确
2.4字符类型
2.4.1基本介绍
- Goalng中没有专门的字符类型,如果要存储单个字母字符,一般使用byte来保存。
- 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。
2.4.2使用细节
(1)字符常量是由(' ')单引号括起来的单个字符,如:'a'
(2)我们保存的字符如果在ASCII表,可以直接使用byte保存,若保存的字符对应码大于255,我们可以使用int来保存
(3)Golang中允许使用转义字符‘\’来将其后的字符转变成特殊字符常量,如:\n表示换行符
(4)Golang中字符采用utf-8编码,即一个英文字母占1个字节,一个中文汉字占3个字节
(5)Golang中,字符的本质是一个整数,直接输出时,是该字符utf-8编码对应的码值,同时可以对整数进行格式化输出%c,会得到相应的utf-8编码的字符
(6)字符类型是可以进行运算的,相当于整数,因为它都对应有Unicode码
var a=10+'n'
fmt.Printf("%d",a)//a==120 n==110
2.4布尔类型
- 布尔类型也叫bool类型,只有true和false两个取值
- 布尔类型占一个字节
- 布尔类型常用于逻辑运算
2.5string类型
2.5.1基本介绍
- 字符串就是一串固定长度的字符连接起来的字符序列。
- Go的字符串是由单个字节连接起来的。
- Go语言的字符串的字节使用utf-8编码表示Unicode文本
2.5.2使用细节
(1)在Go中,字符串一旦赋值了,就不能改变了
(2)字符串的两种表示形式:
- 双引号( " " ),会识别转义字符
- 反引号( ` ` ),以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果
(3)在Go中字符串可以拼接,拼接方式为用加号(+),如 :
var str string="hello"+" csdn"fmt.Printf("%s",str)//输出hello csdn
(4)当字符串太长时,可以将其分成多行,但+号需留在上一行,即+号不能在一行的开头
var str string="hfeebnehr"+"hegvbfiwegifvwebgvwioebgvw"+"oegvwoegnwbeopvnwgpegvonwpegovnw"fmt.Printf("%s",str)
2.6基本数据类型的默认值
类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
布尔类型 | false |
2.7基本数据类型之间的相互转换
2.7.1基本语法
T(v):将v转换为T类型,v为需要转换的变量,T为v转换后的的类型
例如:
var a int=10var b float64=float64(a)fmt.Printf("b的类型为%T,值为%f",b,b)
2.7.2使用细节
(1)在Go中,数据类型的转换可以从范围小转范围大,也可以从范围大转范围小。
(2)被转换的是变量存储的数据(即值),变量本身数据类型不变
(3)在转换中,从int64转换成int8编译不会报错,不过结果会按溢出处理
var a int32=10var b int8var c int8b=int8(a)+127//编译通过,结果按溢出处理c=int8(a)+128//编译报错,栈溢出fmt.Printf("b的类型为%T,值为%d",b,b)
2.8基本数据类型和string间的转换
2.8.1基本数据类型转string
(1)使用Sprintf函数
用法:Sprintf("%参数",表达式)
说明:Sprintf根据参数生成格式化的字符串并返回该字符串
var n=432var m=3.14var str string=fmt.Sprintf("%d",n)var str2 string=fmt.Sprintf("%f",m)fmt.Printf("str的类型为%T,值为%s\n",str,str)fmt.Printf("str2的类型为%T,值为%s",str2,str2)
(2)使用strconv包中的函数
var n int=444/*func FormatInt(i int64, base int) string i必须为int64型,所以当不是int64型时,需类型转换base 表示进制,范围为2~32*/var str string=strconv.FormatInt(int64(n),10)fmt.Printf("str的数据类型为%T,值为%s",str,str)/*func FormatFloat(f float64, fmt byte, prec, bitSize int) stringfmt表示格式prec表示精度,若fmt=='f',则prec表示数点后的位数*/var f float64=520.1314var str2 string=strconv.FormatFloat(f,'f',4,64)fmt.Printf("str2的数据类型为%T,值为%s",str2,str2)
2.8.2 string类型转基本数据类型
方法:使用strconv包中的函数
var str1 string="4315"var str2 string="3.14159"var n1 int64n1, _=strconv.ParseInt(str1,10,64)fmt.Printf("n1的数据类型为%T,值为%d\n",n1,n1)var n2 float64n2,_=strconv.ParseFloat(str2,64)fmt.Printf("n2的数据类型为%T,值为%f",n2,n2)
注:在string类型转向基本数据类型时,要确保string类型能够转成有效的数据。
三、标识符
3.1基本介绍
- Go对变量,函数等命名时使用的字符序列称为标识符
- 凡是自己可以取名字的都叫标识符
3.2标识符命名规则
(1)由26个英文字母(包括大小写),0~9,_下划线组成。
(2)标识符命名不可用数字开头
(3)标识符不能有空格,标识符严格区分字母大小写
(4)不能用系统关键字命名,如 :if for
(5)在Go中下划线_是一种特殊的标识符,称为空标识符,可以代表其他任意标识符,但示它的值会被忽略,所以仅能用其作为占位符,不能作为标识符使用
3.3标识符命名注意事项
(1)包名:保持package的名字和目录一致,尽量用简短有意义的包名,但不能和系统包名冲突
(2)变量名、常量名、函数名:采用驼峰法命名规则
(3)在Go中,变量名、常量名、函数名首字母大写能被其他包访问(即public),小写则不能被访问(即private),Golang没有public和private修饰符。
结语
感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!
路漫漫其修远兮,吾将上下而求索。