• Go--数据类型



    一、数据类型的基本介绍

    尚硅谷

    1.1、整数类型

    基本介绍

    • 简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等
      * 简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等
      在这里插入图片描述

    1.2、小数类型/浮点型

    基本介绍

    • 小数类型就是用于存放小数的,比如 1.2 0.23 -1.911
      在这里插入图片描述
      说明:float64 的精度比 float32 的要准确.
      说明:如果我们要保存一个精度高的数,则应该选用 float64

    1.3、浮点型使用细节

    1、Golang 浮点类型有固定的范围和字段长度,不受具体 OS(操作系统)的影响。
    2、 Golang 的浮点型默认声明为 float64 类型。

    1.4、字符类型

    基本介绍

    • Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。
      字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也
      就是说对于传统的字符串是由字符组成的,而 Go 的字符串不同,它是由字节组成的

    1.4.1、当我们直接输出byte的值,就是输出了对应的字符的ascll码

    	//输出字节类型如果是字母的话就是ascll码
    	// 当我们直接输出byte的值,就是输出了对应的字符的ascll码值
    	var c1 byte = 'l'  //小写的l
    	var c2 byte = 'a'  //小写的a
    	fmt.Println("c1 =", c1)  // 108
    	fmt.Println("c2=", c2)  // 97 
    	fmt.Println("=", c1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    格式化输出要使用 fmt.Printf()方法

    
    	var c1 byte = 'l'       //小写的l
    	var c2 byte = 'a'       //小写的a
    	// fmt.Println("c1 =", c1) // 108
    	// fmt.Println("c2=", c2)  // 97
    	// fmt.Println("=", c1)
    	//如果我们希望输出对应的字符,需要使用格式化输出
    	fmt.Printf("c1=%c c2=%c\n", c1, c2)  // c1=l c2=a
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    上面的说明

    
    1、如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
    2、如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
    3、如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(%c”, c1)..
    
    • 1
    • 2
    • 3
    • 4

    1.5、布尔类型

    1、布尔类型也叫 bool 类型,bool 类型数据只允许取值 truefalse
    2bool 类型占 1 个字节。
    3bool 类型适于逻辑运算,一般用于程序流程控制
    	if 条件控制语句;
    	for 循环控制语句
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.6、string 类型

    1.6.1、基本介绍

    • 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go
      语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本
    	var name string = "我是老王"
    	fmt.Println(name)
    
    • 1
    • 2

    1.6.2、string 使用注意事项和细节

    • 1、Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本,这样 Golang 统一使用 UTF-8 编码,中文
      乱码问题不会再困扰程序员。
    • 2、字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的
    	var name string = "我是老王"
    	fmt.Println(name)
    	var name1 string = "我是一个测试数据"  // 我是一个测试数据
    	// name1[0] = "她"  // 不可以,因为go的string中的数据一旦被定义不可以修改,除非修改这个字符串的赋值
    	fmt.Println(name1)
    	name = "我是修改后的测试数据"
    	fmt.Println(name)  // 我是修改后的测试数据
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.6.3、字符串的两种表示形式

    • 1、双引号, 会识别转义字符
    • 2、反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
    	var str1 string = "abc\nde"
    	fmt.Println(str1) // abc
    	// de
    	var str2 string = `我是一个不识别换\n行符的`
    	fmt.Println(str2)   //我是一个不识别换\n行符的
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.6.4、字符串拼接方式

    	var name_one string = "俺是"
    	var name_two string = "老王头"
    	fmt.Println(name_one + name_two)  //俺是老王头
    
    • 1
    • 2
    • 3

    1.7、打印元素的类型

    • 格式 : fmt.Printf(“%T”, 元素)
    	name := "老王头"
    	fmt.Printf("%T", name) //string
    
    	age := 16
    	fmt.Printf("%T", age) // int
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、基本数据类型的默认值

    • 在 go 中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在 go 中,默认值
      又叫零值

    2.1 基本数据类型的默认值如下

    在这里插入图片描述

    2.2 、基本数据类型的相互转换

    • Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数
      据类型不能自动转换

    2.2.1 、基本语法

    表达式 T(v) 将值 v 转换为类型 T
    T: 就是数据类型,比如 int32,int64,float32 等等
    v: 就是需要转换的变量
    
    • 1
    • 2
    • 3

    注意事项

    1、Go 中,数据类型的转换可以是从 表示范围小-->表示范围大,也可以 范围大--->范围小
    2、被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
    3、在转换中,比如将 int64 转成 int8-128---127】 ,编译时不会报错,只是转换的结果是按
    溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围
    
    • 1
    • 2
    • 3
    • 4
    	var n1 int32 = 12
    	var n2 int64
    	var n3 int8
    
    	n2 = int64(n1) + 10
    	n3 = int8(n1) - 4
    	fmt.Println(n1)  // 12
    	fmt.Println(n2)  // 22
    	fmt.Println(n3)  // 8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.2.2、 基本类型转 string 类型

    2.2.1 、fmt.Sprintf(“%参数”, 表达式)

    fmt.Sprintf(“%参数”, 表达式)
    fmt.Sprintf()… 会返回转换后的字符串

    	var num1 int = 90
    	var num2 float64 = 23.456
    	b := true
    	mychar := 'h'
    	var str string
    
    	str = fmt.Sprintf("%d", num1)
    	fmt.Printf("str type %T str=%q\n", str, str) //str type string str="90"
    
    	str = fmt.Sprintf("%f", num2)
    	fmt.Printf("str type %T str = %q\n", str, str) // str type string str = "23.456000"
    
    	str = fmt.Sprintf("%t", b)
    	fmt.Printf("str type %T str = %q\n", str, str) // str type string str = "true"
    
    	str = fmt.Sprintf("%c", mychar)
    	fmt.Printf("str type %T str = %q\n", str, str) //str type string str = "104"
    	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    2.2.2 、 使用 strconv 包的函数

    三、注意点

    1go区分大小写 在 golang 中,num 和 Num 是两个不同的变量
    2、 包名:保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和
    标准库不要冲突 fmt
    3、变量名、函数名、常量名:采用驼峰法 eg:  var stuName string = “tom” 形式: xxxYyyyyZzzz ...
    4、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能
    在本包中使用 ( 注:可以简单的理解成,首字母大写是公开的,首字母小写是私有的) ,在 golang 没有
    public , private 等关键字
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Java程序员学vue3最好的方式就是搭建后台管理模板
    Day 36: 关系型数据库和MySQL概述
    MySQL 并发事务问题和隔离级别 (事务篇 三)
    性能测试 —— Jmeter 常用三种定时器
    适配器模式
    OS 二级页表
    全球 IPv4 耗尽,下个月开始收费!
    探索 ONLYOFFICE:开源办公套件的魅力
    app.js错误: Error: module “core/const.js“ is not defined
    C# 连接mysql 数据库
  • 原文地址:https://blog.csdn.net/Lovely_red_scarf/article/details/126930948