GO09:整型、浮点、字符类型的介绍和使用细节

本文详细介绍了Go语言中的基本数据类型,包括整数、浮点数、字符、布尔型和字符串的使用细节,以及它们的默认值和相互转换。特别强调了指针的概念,指针在内存的布局以及如何通过指针修改变量的值。此外,还讨论了值类型和引用类型的区别,以及标识符的命名规范。
摘要由CSDN通过智能技术生成

基本类型的使用

基本介绍

请添加图片描述


3.8整数的各个类型

请添加图片描述

func main(){

		var i int = 1 
		fmt.Println("i=", i)
var j int8 = 127
fmt.Println("j=", j)
}

int的无符号的类型:
请添加图片描述
请添加图片描述

请添加图片描述

整型的使用细节
一、Golang各整数部分:有符号和无符号,int uint 的大小和系统有关
二、Golang的整型默认声明为int型
	var n1 = 100//n1是什么类型
   //fmt.Printf()可以用于做格式化输出
   fmt.Printf("n1 的类型是 %T",n1)
   ````

#### 三、如何在程序查看某个变量的字节大小和数据类型(使用较多)
int 默认是64````go
package main

import (
   "fmt"
   "unsafe"
)
func main() {

   var n1 = 100//n1是什么类型 
   //fmt.Printf()可以用于做格式化输出
   fmt.Printf("n1 的类型是 %T",n1)

   var n2 int64 = 10
   fmt.Printf("n2 的类型 %T n2占用的字节数是%d",n2,unsafe.Sizeof(n2))
}

四、Golang程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型「如:年龄」
var age byte = 100
五、bit:计算机中的最小存储单位。byte:计算机中基本存储单元。「二进制」

1byte=8bit


3.9 小数类型/浮点类型

小数类型就是用于存放小数的,比如 1.2. 0.23-1.911

案例:

var price float32 = 89.12
	fmt.Println("price=",price)
小数类型分类

请添加图片描述

说明

  • 1、关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位. 3.56 11110000111.111111111111111111000
    说明浮点数都是有符号的

请添加图片描述

  • 2、尾数部分可能丢失,会有精度损失
    请添加图片描述
    float64比float32精度要高,说明我们要保存一个精度高的数字,则应该选择float64
浮点型的使用细节
  • 1、golang浮点类型有固定的范围和字段长度,不受具体OS的影响

  • 2、golang 的浮点型默认声明为float64类型
    请添加图片描述

  • 3、浮点型常量有两种变现形式

    • 十进制数形式,如:5.12 .512(必须有小数点)
      请添加图片描述
    • 科学技术法形式:如:5.1234e2 = 5.12 * 10 的2次方。5.12E-2 = 5.12/10的2次方
      请添加图片描述
  • 4、通常情况下,应该使用float64,因它比float32更精确,


3.10字符类型(char)

基本介绍

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

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节链接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。
请添加图片描述
案例演示:
c3=%c, c3对应的码值=%d

说明:
1)如果保存的字符在ASCII中,比如[0-1,a-z,A-Z]直接可以保存到byte
2)如果保存的字符对应码值大于255,这时可以考虑使用int类型保存
3)如果需要按照字符的方式输出们需要格式化输出 fmt.Printf(“c3=%c,c3对应码值=%d”,c3,c3)

使用细节

1)字符常量使用单引号’'括起来的单个字符,例如,

var c1 byte 'a'   
var c2 int '中'  
var c3 byte = '9'
  1. Go中允许使用转义字符 ‘’ 来将其后的字符转变为特殊字符型常量,例如
var c3 char = '\n' // ‘\n’表示换行符

3) Go语言的字符使用UTF-8 编码,UTF8码值表http://www.mytju.com/classcode/tools/encode_utf8.asp

英文字母- 1个字节 汉字- 3个字节
4) 在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值
5) 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符

var c4 int =22269 //--->'国' 120 - 'x'
	fmt.Printf("%c", c4)

6)字符可行是可以进行运算的,相当于一个整数,因为它都对应有Unicode码
请添加图片描述

字符类型本质探讨

1)字符型—存储到计算机中,需要将字符对应的码值(整数)找出来

  • 存储: 字符—>对应码值—>二进制—>存储
  • 读取:二进制—>码值—>字符—>读取

2)字符和码值的对应关系是通过字符编码表决定的(是规定好的)
3)Go语言的编码都统一成了utf8.非常方便,很统一,再也没有乱码的困扰了


3.11 布尔类型

基本介绍
  1. 布尔类型也叫bool类型,bool类型数据只允许取值true和false
    2)bool类型占1个字节
    3)bool类型适用于逻辑运算,一般用于程序流程控制 【注:后面详细讲解】

经常用于

  • if条件控制语句
  • for循环控制语句

案例演示
请添加图片描述
请添加图片描述


3.12 string 类型

基本介绍

字符串就是一串固定长度的字符连接起来的字符序列,Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码表示Unicode文本

案例演示
请添加图片描述

请添加图片描述

使用细节

1)Go语言的字符串的字节使用UTF-8编码表示Unicode文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再困扰程序员
2)字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的
请添加图片描述
3)字符串的两种表示形式

  • 双引号,会识别转义字符
  • 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果

案例演示
请添加图片描述
4)字符串拼接方式

请添加图片描述
请添加图片描述

5)当一行字符串太长时,需要使用到多行字符串,可以如下处理

请添加图片描述
请添加图片描述


3.13 基本数据类型的默认值

基本介绍

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

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

在这里插入图片描述
请添加图片描述
请添加图片描述

3.14基本数据类型的相互转换

基本介绍

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

基本语法

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

T :就是数据类型,比如int32、int64等等
v:就是需要转换的变量

案例演示
请添加图片描述
请添加图片描述

注意事项

1)Go中,数据类型的转换时可以从 表示范围小—>表示范围大,也可以 表示范围大—>表示范围小
2)被转换的是变量存储的数据(指),变量本身的数据类型并没有变化!
请添加图片描述
3)在转换中,比如将int64 转成int8 【-128–127】,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样。因此在转换时,需要考虑范围。
请添加图片描述

课堂练习
练习1、

请添加图片描述
需要将飘红处改为
请添加图片描述

练习2、

请添加图片描述


3.15 基本数据类型和string的转换

基本介绍

在程序开发中,我们经常将基本数据类型转换成string或者将string转换成基本数据类型

基本类型==》string类型
  • 方式1: fmt.Sprintf(“%参数”, 表达式)
    函数的介绍:
    在这里插入图片描述
    参数需要和表达式的数据类型相匹配
    fmt.Sprintf()。会返回转换后的字符串

案例演示:
请添加图片描述

  • 方式2 :使用strconv包的函数
    在这里插入图片描述
    案例说明:
    请添加图片描述
string类型转基本数据类型
  • 使用strconv包的函数
    在这里插入图片描述

案例演示

在这里插入图片描述

说明
note:因为返回的是int64或者float64 如果希望要得到int32、folat32等如下处理
在这里插入图片描述

string转基本数据类型的注意事项

在将string转成基本数据类型时,要确保string类型能够转成有效的数据,比如 我们可以将“123”,转成一个整数,但不能把“hello”转成一个整数,如果这样做,golang直接将其转成 0 ,其他类型也是一样的道理。float–〉0。 bool–〉0

在这里插入图片描述


3.16 指针

基本介绍

1)基本数据类型,变量存的就是值,也叫值类型
2)获取变量的地址,用&,比如:var num int, 获取num的地址:&num
分析一下基本数据类型在内存的布局
在这里插入图片描述
3)指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值
比如:var ptr *int = &num

举例说明:指针在内存的布局

在这里插入图片描述
4)获取指针类型所指向的值,使用 * 比如 :var ptr int 使用ptr获取ptr指向的值
在这里插入图片描述
5)一个案例再说明

在这里插入图片描述

案例演示

  1. 写一个程序,获取一个 int 变量 num 的地址,并显示到终端
  2. 将 num 的地址赋给指针 ptr , 并通过 ptr 去修改 num 的值.

在这里插入图片描述

课堂练习

在这里插入图片描述

指针的使用细节

1)值类型,都有对应的指针类型,形式为 *数据类型,比如int的对应的指针就是 int,float32 对应的指针类型就是float32。。。
2)值类型包括:基本数据类型 int系列,float系列,bool,string ,数组和结构体struct


3.17 值类型和引用类型

值类型和引用类型的说明

1)值类型:基本数据类型 int系列,float系列,bool,string ,数组和结构体struct
2)引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型

值类型和引用类型的使用特点

1)值类型 :变量直接存储值,内存通常在栈中分配
在这里插入图片描述
2)引用类型 :变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为了一个垃圾,需要GC来回收
在这里插入图片描述
3)内存的栈区和堆区示意图
在这里插入图片描述


3.18 标识符的命名规范

标识符概念

1)Golang对各种变量、方法、函数等命名时使用的字符序列称为标识符
2)凡是可以自己起名字的地方都叫标识符

标识符的命名规则
  1. 由 26 个英文字母大小写,0-9 ,_ 组成 2) 数字不可以开头。var num int //ok var 3num int //error 3) Golang 中严格区分大小写。
    var num int
    var Num int
    说明:在 golang中,num 和 Num 是两个不同的变量 4) 标识符不能包含空格。
    在这里插入图片描述
  2. 下划线"_"本身在 Go 中是一个特殊的标识符,称为空标识符。可以代表任何其它的标识符,但 是它对应的值会被忽略(比如:忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用
    在这里插入图片描述
  3. 不能以系统保留关键字作为标识符(一共有 25 个),比如 break,if 等等…
标识符的案例

hello // ok
hello12 //ok
1hello // error ,不能以数字开头
h-b // error ,不能使用 -
x h // error, 不能含有空格
h_4 // ok _ab // ok int // ok , 我们要求大家不要这样使用
float32 // ok , 我们要求大家不要这样使用
_ // error
Abc // ok

标识符命名注意事项
  1. 包名:保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和
    标准库不要冲突 fmt
    在这里插入图片描述
  2. 变量名、函数名、常量名:采用驼峰法
    举例:
    var stuName string = “tom” 形式: xxxYyyyyZzzz …
    var goodPrice float32 = 1234.5
  3. 如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能
    在本包中使用 ( 注:可以简单的理解成,首字母大写是公开的,首字母小写是私有的) ,在 golang 没有 public , private 等关键字。
    案例演示:
    在这里插入图片描述
    在这里插入图片描述

3.20 系统的预定义标识符

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值