GoLang随笔

Golang的诞生

go语言的核心开发者—三位大牛

约定俗成:go总项目-src-go_code–项目1/项目2—-包-具体.go文件

生产模式中,通常先编译成.exe文件再执行

golang执行流程分析

  • 变量在同一作用域中不能重名
  • 变量 = 变量名+值+数据类型
  • 变量在同一作用域中,该数值可以在同类型里不断变化(覆盖)
  • 变量在没有赋值的情况下,编译器会使用默认值,例如int默认0,string默认空串,小数默认0

具体变量类型

无符 :

整型使用细节:

  • golang各整数类型分:有符 和无符 ,int,uint的大小和系统有关。
  • golang的整型默认声明为int型
  • 如何在程序查看某个变量的字节大小和数据类型
  • golang程序运行中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正常运行下,尽量使用占用空间小的数据类型。如年龄。
  • bit:计算机中最小的存储单位。byte:计算机中基本的存储单位。【二进制】

1byte = 8bit

2)小数类型/浮点型

用于存放小数:1.2,1.31,-1.19

说明:浮点数 = 符 位+指数位+尾数位

尾数位可能丢失,造成精度损失

float64比float32更精确

浮点类型使用细节:

  • 浮点类型有固定的范围和字段长度,不受具体os的影响
  • 浮点型默认声明float64类型
  • 浮点型常量有两种表示形式
    • 十进制数形式:如:5.12 ,.512(必须有小数点)
    • 科学计数法形式:如:5.1234e2 = 5.12*10的2次方,5.12E-2 = 5.12/10的2次方
  • 通常情况下,应该使用float64,因此它比float32更精确

3)字符类型

golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。(ASCII)

如果我们保存的字符在ASCII表的,如[0-1,1-z,A-Z]则可以保存到byte;

如果我们保存的字符对应码值大于255,这时我们可以考虑使用int类型保存;

如果我们需要安装字符的方式输出,这时我们需要格式化输出,即fmt.Printf(“byte1 = %c”, byte1)

字符类型使用细节

  • 字符常量是使用单引 ’’括起来的单个字符,例如var c1 byte = ‘a’ var c2 int = ‘中’
  • Go中允许使用转义字符’‘来将其后的字符转变为特殊字符型常量。例如 var c3 char = ‘n’ //’n’表示换行符
  • go语言的字符使用utf-8编码

英文字母1个字节,汉字3个字节

  • 在go中,字符的本质是一个整数,直接输出时,是该字符对应的utf-8编码的码值
  • 直接可以给某个变量夫一个数字,然后按格式化输出时%c,会对应输出该字符的unicode字符
  • 字符类型是可以进行运算的,相当于一个整数,因为它都对应有unicode码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdMSQf5T-1646573975876)(http://h9x14s4c.xyz/img/202111211632922.png)]

4)布尔类型

也叫bool类型,bool类型数据只允许取值true和false。

bool类型占1个字节。

bool类型适合于逻辑运算,一般用于程序流程控制

不可以0或非0整数替代false和true,这点和c语言不同

5)字符串类型

字符串类型使用细节

  • go语言的字符串字节使用utf-8编码表示unicode文本,这样golang统一使用utf-8编码,乱码的问题不会再困扰程序员
  • 字符串一旦赋值了,字符串就不能修改了:在go中字符串是不可变的。
  • 字符串的两种表示形式
    • 双引 :会识别转移字符
    • 反引 ,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
  • 字符串拼接方式
    • 多行使用+进行拼接时,加 留在前一行

基本数据类型默认值

image-20211121165051764

基本数据类型转换

go在不同类型的变量之间赋值时需要显式转换(强制转换)。也就是说golang中数据类型不能自动转换

基本语法:

表达式T(v):将v转换为类型T

细节说明

  • go中,数据类型的转换可以从表示范围小->表示范围大,也可以 范围大->范围小
  • 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
  • 在转换中,比如将int64转成int8,编译时不会 错,只是转换结果是按溢出处理,和我们希望的结果不一样

ps:如果想忽略未定义的包,请在未引用的包前加下划线’_‘

基本数据类型转string类型

  • 使用Springf转换
func Sprintf

Sprintf根据format参数生成格式化的字符串并返回该字符串。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月4日
下一篇 2022年2月5日

相关推荐