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

news2024/11/15 3:23:26

基本类型的使用

基本介绍

请添加图片描述


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 系统的预定义标识符

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信而泰RENIX 802.1ag功能介绍-网络测试仪实操

一、EOAM概述​ 1.以太网​ 1.1以太网优点​ 简单易用​ 价格低廉​ 高拓展性​ 大势所趋,一统天下​ 1.2以太网缺点​ 可管理性差​ 定位故障手段少​ 定位故障速度慢​ 维护成本高​ 2.以太网OAM​ ■EOAM​ 为运营商服务​ 提高以太网可靠性、可维…

非零基础自学Golang 第15章 Go命令行工具 15.6 性能分析 15.6.2 通过文件方式 15.6.3 通过HTTP方式 15.7 小结

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.6 性能分析15.6.2 通过文件方式15.6.3 通过HTTP方式15.7 小结第15章 Go命令行工具 15.6 性能分析 15.6.2 通过文件方式 为了能分析Go程序的性能,我们需要在程序中导入runtime/pprof来生成性…

飞鹤揭榜“十四五”项目,牵头研制新一代婴配粉

12月22日,在“鲜萃活性营养,更适合中国宝宝体质”中国飞鹤60周年战略升级发布会上,飞鹤对外公布,其牵头申报的——“基于中国母乳研究的新一代婴配乳粉制造技术研究与示范”项目成功获批。 这是继去年飞鹤与江南大学、大连工业大…

大数据基础平台搭建-(二)Hadoop集群搭建

大数据基础平台搭建-(二)Hadoop集群搭建 大数据平台系列文章: 1、大数据基础平台搭建-(一)基础环境准备 2、大数据基础平台搭建-(二)Hadoop集群搭建 大数据平台是基于Apache Hadoop_3.3.4搭建的…

不同存储资源的应用场景及优缺点介绍

容器应用应当根据应用系统的特点,综合考虑容器应用对存储类型、存储性能及数据高可用等方面的要求,选择最适合的存储资源类型。常见的存储资源应用场景包括三类:将存储挂载在外部宿主机上、将存储放置于容器内部和使用外部共享存储。下面对每…

MySQL面试常问问题(数据库架构+存储引擎) —— 赶快收藏

目录 1.说说 MySQL 的基础架构? 2.一条 SQL 查询语句在 MySQL 中如何执行的? 3.MySQL有哪些常见存储引擎? 4.那存储引擎应该怎么选择? 5.InnoDB和MylSAM主要有什么区别? 1.说说 MySQL 的基础架构? MySQL逻辑架构图主要分三…

浅谈古建筑电气火灾成因及防控对策

摘要: 我国古建筑多为砖木结构,当发生火灾事故时具有蔓延快、扑救难的特点,而火灾对古建筑的损害性很大,电气火灾事故在我国火灾事故中比重居高不下。本文通过对古建筑电气火灾成因进行分析,有针对性地提出了古建筑电气火灾防控对…

Java工厂企业工艺管理系统源码 springboot2+vue2前后端分离架构 工艺路线 加工工序管理源码

工艺系统是对车间现场加工工序的管理,根据生产成品或者半成品的工单,以及产品标准工艺路线,系统可以自动生成产品工序加工命令 并且可以根据实际情况再进行工序调整.系统可以根据每道工序,打印工序派工单。工序之间物料转移&#…

【推荐】华为顶级认证HCIE-RS培训教材全套合集

HCIE是华为认证系统中的专家级认证。候选人必须通过笔试,LAB考试和面试,才能最终获得HCIE认证。困难还从另一方面解释了证书的含金量。 该认证具有很高的含金量和行业认可度。此外,获得HCIE证书的工程师将优先获得华为和华为合作伙伴的聘用&a…

Struts2中的数据校验

Struts2中的数据校验1、Action控制器2、jsp页面3、struts.xml配置4、测试1、Action控制器 如果要使用校验,则需要继承ActionSupport类,覆写validate()方法,如果是实现Action接口,则无法覆写此方法。直接在之前的控制器基础上进行…

Spring 中使用Nacos配置管理

添加依赖 <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId><version>${latest.version}</version> </dependency>本文使用的版本为&#xff1a;1.1.1 注&#xff1a;我们在N…

【nowcoder】笔试强训Day1

目录 一、选择题 二、编程题 2.1组队竞赛 2.2删除公共字符串 一、选择题 1.在 Java 中&#xff0c;存放字符串常量的对象属于&#xff08; &#xff09;类对象。 A Character B String C StringBuffer D Vector 字符串分为两大类&#xff0c;一类是字符串常量&#xf…

ESLint + StyleLint + Prettier + VSCode 打造最优雅的前端开发体验

ESLint StyleLint Prettier VSCode 打造最优雅的前端开发体验 引言 对于一个成熟的前端团队&#xff0c;统一的编码规范和提交规范尤其重要。要保证秩序井然、风格统一、整齐有序&#xff0c;光把规范写在文档里是没有太多实际价值的。没有人愿意去一条一条看规则&#xff…

ovn:中央节点ip变更导致节点失联

1.当ovn的中央节点ip突然变更&#xff08;从3.197->1.114&#xff09;后&#xff0c;便再无法同节点之间进行信息的同步。 2.已将节点的ovn-remote变更到最新的中央节点ip 3.但是进行ovn-controller 检测时却显示失败 4.通过telnet 测试6642 端口失败 5.最后发现原来是中央…

【UE4 第一人称射击游戏】05-设置角色动画

素材资料地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1epyD62jpOZg-o4NjWEjiyg 密码&#xff1a;jlhr 步骤&#xff1a; 1.新建一个名为“Character”的文件夹 将Swat.fbx导入Character文件夹中 新建一个名为“Animation”的文件夹 将Animation文件夹内的所…

大数据基础平台搭建-(一)基础环境准备

大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 大数据平台系列文章&#xff1a; 1、大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 2、大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 目录大数据基础平台搭建-&#xff08;一&#…

docker安装minio集群

docker安装minio集群 文章目录docker安装minio集群1、所有节点配置主机名解析2、配置时间同步&#xff0c;关闭防火墙和selinux。3、所有节点安装docker4、部署minio集群&#xff0c;3个节点每个节点挂载2个目录10.20.138.5210.20.138.5310.20.138.545、访问任意节点的9000端口…

vm vh移动端布局及 bilibili官网移动端首页布局

vm和vh是啥&#xff1f; 市场上的移动端大多数为flex布局&#xff0c;此时我们用到了rem这个单位&#xff0c;但是rem需要媒体查询&#xff0c;要根据页面是尺寸进行修改&#xff0c;而vm/vh省去各种判断和修改&#xff0c;像B站就通过vue和vm写的。 vm/vh是一个相对单位&…

【Quarkus技术系列】「云原生架构实战」配置参考指南相关的功能机制配置介绍分析

回顾Quarkus介绍 Quarkus的概念定义 Quarkus是一个为Java虚拟机&#xff08;JVM&#xff09;和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架&#xff0c;用于专门针对容器优化 Java&#xff0c;并使其成为无服务器、云和 Kubernetes 环境的高效平台。 Quarkus与框架整…

Spring Boot整合分布式搜索引擎ElasticSearch 实现相关操作

一、ElasticSearch 介绍 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性&#xff0c;能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步…