• Go语言学习(二)-- 基本数据类型


    目录

     1 Go语言命名规则

     2 基本数据类型

    2.1 布尔型

    2.2 整型

    2.3 浮点型

    2.4 字符

    2.5 字符串

     2.6 字符串拼接方式"+"

    3 类型转换


    数据类型表示数据在内存中开辟的空间大小的别称。

    Go 语言中数据类型可以分为: 基本数据类型 派生数据类型

     1 Go语言命名规则

    命名规则 
    • 允许使用字母、数字、下划线
    • 不允许使用Go语言关键字
    • 不允许使用数字开头
    • 区分大小写
    • 见名知义 (规范而非准则)
    驼峰命名法
    • 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始,第二个单词的首字母大写,例如:myNamedogAge
    • 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstNameLastName

     2 基本数据类型

    Go 语言数据类型分为五种:
    • 布尔类型
    • 整型类型
    • 浮点类型
    • 字符类型
    • 字符串类型

    2.1 布尔型

    • 布尔类型也叫做bool类型,bool类型数据只允许取值truefalse
    • bool类型占1个字节
    • bool类型适用于逻辑运算,一般用于流程控制

     

    2.2 整型

    • 整型数据分为两类,有符号和无符号两种类型  
    1. 有符号: int, int8, int16, int32, int64
    2. 无符号: uint, uint8, uint16, uint32, uint64, byte
    3. 不同位数的整型区别在于能保存整型数字范围的大小
    4. 有符号类型可以存储任何整数,无符号类型只能存储自然数
    5. intuint的大小和系统有关,32位系统表示int32uint32,如果是64位系统则表示int64uint64
    1. func main() {
    2. var flag = true
    3. fmt.Print(flag)
    4. var num1 int = 1
    5. var num2 int32 = 123
    6. fmt.Printf("%d,%d\n", num1, num2)
    7. //无符号数就是在存储的时候没有符号位
    8. /*var num3 uint = -11
    9. fmt.Println(num3) */ //cannot use -11 (untyped int constant) as uint value in variable declaration (overflows)
    10. fmt.Printf("%T,%T\n", num1, num2) //输出变量类型
    11. println(unsafe.Sizeof(num1)) //查看变量占用字节 8
    12. println(unsafe.Sizeof(num2)) //查看变量占用字节 4
    13. }
    • 十进制整数,使用0-9的数字表示且不以0开头
    • 八进制整数,以0开头,0-7的数字表示
    • 十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成
    1. func main() {
    2. //十进制整数,使用0-9的数字表示且不以0开头
    3. var num1 = 123
    4. fmt.Println(num1)
    5. //八进制整数,以0开头,0-7的数字表示
    6. var num2 = 0712
    7. fmt.Println(num2) //458
    8. fmt.Printf("%o",num2) //表示以八进制方式输出num2 712
    9. //十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成
    10. num := 0x22ff
    11. fmt.Printf("%x",num) //十六进制小写输出num
    12. }

    2.3 浮点型

    • 浮点数由整数部分、小数点和小数部分组成,整数部分和小数部分可以隐藏其中一种。也可以使用科学计数法表示
    • 尾数部分可能丢失,造成精度损失
    • float64的精度要比float32的要准确
    1. func main() {
    2. var f1 = 1.2345678
    3. fmt.Println(f1)
    4. fmt.Printf("%.6f\n", f1)
    5. //能否用浮点数来比较是否相等 在这里是可以的 还没有出现误差
    6. var f2 = 1.2345678
    7. if f1 == f2 {
    8. fmt.Println("相等")
    9. }
    10. }

    2.4 字符

    • Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存
    • 字符只能被单引号包裹,不能用双引号,双引号包裹的是字符串
    • 字符使用UTF-8编码,英文字母占一个字符,汉字占三个字符
    • 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
    • 字符类型是可以运算的,相当于一个整数,因为它们都有对应的unicode
    • 但是如果我们保存的字符大于 255 ,比如存储汉字,这时 byte 类型就无法保存,可以使用rune 类型保存
    1. func main() {
    2. /* // byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
    3. // used, by convention, to distinguish byte values from 8-bit unsigned
    4. // integer values.
    5. type byte = uint8
    6. // rune is an alias for int32 and is equivalent to int32 in all ways. It is
    7. // used, by convention, to distinguish character values from integer values.
    8. type rune = int32*/
    9. var char byte = '1'
    10. // var c byte = '哎'//err
    11. fmt.Println(char)
    12. char1 := '中'
    13. fmt.Print(char1) //20013
    14. var char2 rune = '国'
    15. fmt.Println(char2)
    16. fmt.Printf("%c\n", char2) //国
    17. }

    2.5 字符串

    • 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本
    • 字符串一旦赋值了,就不能修改了:Go中字符串是不可变的
    • 字符串的两种标识形式
    双引号,会识别转义字符
    1. var str = "123\nabc" //输出时会换行
    2. fmt.Println(str)

    反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
    1. var str2 = `123\nabc` //输出时原样输出,不会转义
    2. fmt.Println(str2)

     2.6 字符串拼接方式"+"

    1. var str = "hello " + "world"
    2. str += "!"
    3. fmt.Println(str) //hello world!
    • 当一行字符串太长时,需要使用到多行字符串,可以使用如下处理,需要注意 + 必须在当前行的结尾

    3 类型转换

    数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。
    两种不同的类型在计算时, Go 语言要求必须进行类型转换。
    类型转换用于将一种数据类型的变量转换为另外一种类型的变量。
    Go 语言类型转换基本格式如下:
    数据类型 ( 变量 ) // 将变量转成指定的类型
    数据类型 ( 表达式 ) //将表达式转成指定的类型

  • 相关阅读:
    异构数据源同步之数据同步 → datax 改造,有点意思
    c++引入ros库,以及编写c++版本的ros案例代码
    基于apache paimon实时数仓全增量一体实时入湖
    uniapp转抖音小程序踩坑记录
    JavaWeb-cookie&session
    React 项目结构小结
    UE4_材质_雨滴涟漪效果ripple effect_ben教程
    【笔记】samba shell 脚本 离线安装 - Ubuntu 20.04
    怎样用python爬虫实现自动监测百度是否收录域名
    欣赏一段Kamailio路由脚本
  • 原文地址:https://blog.csdn.net/qq_45875349/article/details/127658636