go语言学习 第 2 章:变量与数据类型
第 2 章:变量与数据类型
在 Go 语言中,变量和数据类型是构建程序的基础。理解它们的使用方式和特性,对于编写高效、可维护的代码至关重要。本章将详细介绍变量的声明、初始化、使用以及 Go 语言中的各种数据类型。
一、变量的声明与初始化
(一)变量的声明
在 Go 语言中,变量的声明使用 var
关键字。声明变量时,需要指定变量的名称和类型。例如:
var age int
var name string
这里声明了两个变量 age
和 name
,分别用于存储整数和字符串。
(二)变量的初始化
变量可以在声明的同时进行初始化。初始化时,可以使用 =
操作符将值赋给变量。例如:
var age int = 18
var name string = "张三"
此外,Go 语言还支持使用 :=
简化语法进行变量声明和初始化。这种语法会自动推断变量的类型。例如:
age := 18
name := "张三"
(三)变量的使用
声明并初始化变量后,就可以在程序中使用它们了。例如:
fmt.Println("年龄:", age, "姓名:", name)
二、数据类型
Go 语言提供了丰富的数据类型,包括基本数据类型和复合数据类型。
(一)基本数据类型
1. 整数类型
Go 语言提供了多种整数类型,用于存储不同范围的整数值。常见的整数类型包括:
int8
:8 位有符号整数,范围为 -128 到 127int16
:16 位有符号整数,范围为 -32768 到 32767int32
:32 位有符号整数,范围为 -2147483648 到 2147483647int64
:64 位有符号整数,范围为 -9223372036854775808 到 9223372036854775807int
:默认的整数类型,其大小取决于平台(32 位或 64 位)
2. 浮点类型
浮点类型用于存储小数值。Go 语言提供了两种浮点类型:
float32
:32 位浮点数float64
:64 位浮点数(默认的浮点类型)
3. 字符类型
Go 语言中没有专门的字符类型,通常使用 byte
或 rune
来存储字符。byte
类型对应于 ASCII 字符,而 rune
类型对应于 Unicode 字符。
4. 布尔类型
布尔类型用于表示逻辑值,只有两个可能的值:true
和 false
。
5. 字符串类型
字符串类型用于存储文本数据。字符串是不可变的,一旦创建,其内容不能被修改。字符串可以使用双引号或反引号定义。例如:
var str1 string = "Hello, World!"
var str2 string = `这是一个多行字符串
可以包含换行符和特殊字符`
(二)复合数据类型
1. 数组
数组是一种固定长度的数据结构,用于存储相同类型的元素。数组的长度在声明时确定,且不可改变。例如:
var arr [5]int
arr[0] = 1
arr[1] = 2
2. 切片
切片是数组的动态版本,其长度可以在运行时动态调整。切片通过 make
函数创建。例如:
slice := make([]int, 5)
slice[0] = 1
slice = append(slice, 2)
3. 映射
映射是一种键值对的数据结构,用于存储关联数据。映射通过 make
函数创建。例如:
mapVar := make(map[string]int)
mapVar["key1"] = 1
mapVar["key2"] = 2
三、类型转换
在 Go 语言中,不同类型的数据之间需要显式转换。例如:
var num int = 10
var floatNum float64 = float64(num)
四、变量的作用域
变量的作用域决定了变量在程序中的可见性。Go 语言中的变量分为局部变量和全局变量:
- 局部变量:在函数内部声明的变量,只在该函数内部可见。
- 全局变量:在函数外部声明的变量,可以在整个程序中访问。
五、常量
常量是不可变的值,一旦赋值后不能修改。常量使用 const
关键字声明。例如:
const PI float64 = 3.14159
总结
本章详细介绍了 Go 语言中的变量和数据类型。变量的声明、初始化和使用是编写 Go 程序的基础。Go 语言提供了丰富的数据类型,包括基本数据类型和复合数据类型,每种类型都有其特定的用途和特点。理解这些数据类型及其使用方式,对于编写高效、可维护的 Go 程序至关重要。
相关文章:
go语言学习 第 2 章:变量与数据类型
第 2 章:变量与数据类型 在 Go 语言中,变量和数据类型是构建程序的基础。理解它们的使用方式和特性,对于编写高效、可维护的代码至关重要。本章将详细介绍变量的声明、初始化、使用以及 Go 语言中的各种数据类型。 一、变量的声明与初始化 …...

大语言模型评测体系全解析(上篇):基础框架与综合评测平台
文章目录 一、评测体系的历史演进与技术底座(一)发展历程:从单任务到全维度评测1. 2018年前:单数据集时代的萌芽2. 2019-2023年:多任务基准的爆发式增长3. 2024年至今:动态化、场景化、多模态体系成型关键节…...
Spring Event(事件驱动机制)
一、Spring Event 应用场景 1. 业务解耦 当一个业务操作触发多个后续动作时,用事件解耦各个动作,避免代码耦合。 比如:用户注册后同时发送欢迎邮件、积分赠送、日志记录等,这些逻辑可以通过事件发布多个监听器异步处理。 2. 跨模…...
Fisher准则例题——给定类内散度矩阵和类样本均值
设有两类样本,两类样本的类内散度矩阵分别为 S 1 ( 1 1 / 2 1 / 2 1 ) , S 2 ( 1 − 1 / 2 − 1 / 2 1 ) S_1 \begin{pmatrix} 1 & 1/2 \\ 1/2 & 1 \end{pmatrix}, \quad S_2 \begin{pmatrix} 1 & -1/2 \\ -1/2 & 1 \end{pmatrix} S1(11/21…...
MySQL数据库中INNODB表数据的备份与恢复
使用数据库时,其中非常重要的一块内容就是数据的安全,而保障数据安全的重要手段是数据备份与还原恢复。目前,我们主要的备份手段有逻辑备份、物理备份,逻辑备份一般适用范围很广,可以适用于解决不同版本间的备份与恢复,但一般执行时间长,而且备份占用空间大。这里介绍一…...
振动分析师(ISO18436-2)四级能力矩阵 - 简介
本文的内容绝大多数来自:VCAT-II Vibration Analyst - Mobius Institute相关振动分析员培训招生彩页,特此致谢!内容整理参见:振动分析师四级能力矩阵 - 知乎。 CAT I 振动分析技术员 1.1角色画像 Collect vibration dataValida…...

生产环境MYSQL常见锁表场景
前言 锁表是我们在生产环境十分常见的问题之一,解决问题前需要先了解锁表产生的原因以找到解决方案,并制定方案以预防锁表,本文接下来会分别模拟元数据锁表(MDL锁)、行锁升级为表锁、死锁、**显示锁表 **四种锁表情形…...

结构性设计模式之Composite(组合)
结构性设计模式之Composite(组合) 摘要: Composite(组合)模式通过树形结构表示"部分-整体"层次关系,使得用户能够统一处理单个对象和组合对象。该模式包含Component(组件接口&#x…...

Java面试八股--04-MySQL
致谢:感谢整理!2025年 Java 面试八股文(20w字)_java面试八股文-CSDN博客 目录 1、Select语句完整的执行顺序 2、MySQL事务 3、MyISAM和InnoDB的区别 4、悲观锁和乐观锁怎么实现 5、聚簇索引与非聚簇索引区别 6、什么情况下my…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(31):そう
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(31):そう 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)复习(2) そう1,いAくな+さそうでう。2,なAな + そうです。3,いいです ー>よさそうです。4、x Xの状況(じょうきょう)5、みたい & ら…...

设计模式——访问者设计模式(行为型)
摘要 访问者设计模式是一种行为型设计模式,它将数据结构与作用于结构上的操作解耦,允许在不修改数据结构的前提下增加新的操作行为。该模式包含关键角色如元素接口、具体元素类、访问者接口和具体访问者类。通过访问者模式,可以在不改变对象…...

实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
本文是实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题。主要涉及线性回归、回归的显著性、回归系数的置信区间。 vial <- seq(1, 10, 1) Viscosity <- c(160,171,175,182,184,181,188,19…...
《对象创建的秘密:Java 内存布局、逃逸分析与 TLAB 优化详解》
大家好呀!今天我们来聊聊Java世界里那些"看不见摸不着"但又超级重要的东西——对象在内存里是怎么"住"的,以及JVM这个"超级管家"是怎么帮我们优化管理的。放心,我会用最接地气的方式讲解,保证连小学…...

LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
上部分链接:LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】 上 题目:1164. 指定日期的产品价格 题解: select product_id,10 price from Products group by product_id having min(change_date) > 201…...
Java并发编程:读写锁与普通互斥锁的深度对比
在Java并发编程中,锁是实现线程安全的重要工具。其中,普通互斥锁(如synchronized和ReentrantLock)和读写锁(ReentrantReadWriteLock)是两种常用的同步机制。本文将从多个维度深入分析它们的区别、适用场景及…...
Spring Boot Actuator未授权访问漏洞修复
方案1:在网关的配置文件里增加以下配置 management:endpoints:web:exposure:include: []enabled-by-default: falseendpoint:health:show-details: ALWAYS 方案二:直接在nginx配置拦截actuator相关接口 location /actuator { return 403; …...

机器学习——SVM
1.什么是SVM 支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了…...

【音视频】FFmpeg 硬件(NVDIA)编码H264
FFmpeg 与x264的关系 ffmpeg软编码是使⽤x264开源项⽬,也就是说ffmpeg软编码H264最终是调⽤了x264开源项⽬,所以我们要先理解ffmpeg和x264的调⽤关系,这⾥我们主要关注x264_init。对于x264的参数都在 ffmpeg\libavcodec \libx264.c x264\co…...

贪心算法应用:超图匹配问题详解
贪心算法应用:超图匹配问题详解 贪心算法在超图匹配问题中有着广泛的应用。下面我将从基础概念到具体实现,全面详细地讲解超图匹配问题及其贪心算法解决方案。 一、超图匹配问题基础 1. 超图基本概念 **超图(Hypergraph)**是普…...
OpenCV CUDA模块结构分析与形状描述符------计算指定阶数的矩(Moments)所需的总数量函数:numMoments
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于计算指定阶数的矩(Moments)所需的总数量。 在图像处理中,矩(moments)是一…...

【Web应用】若依框架:基础篇13 源码阅读-前端代码分析
文章目录 ⭐前言⭐一、课程讲解过程⭐二、自己动手实操⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈(,NET/Java/Python/C)、数据库、操作系统、大数据、人工智能、工控、网…...

[java八股文][JavaSpring面试篇]SpringCloud
了解SpringCloud吗,说一下他和SpringBoot的区别 Spring Boot是用于构建单个Spring应用的框架,而Spring Cloud则是用于构建分布式系统中的微服务架构的工具,Spring Cloud提供了服务注册与发现、负载均衡、断路器、网关等功能。 两者可以结合…...
深度学习篇---face-recognition的优劣点
face_recognition库是一个基于 Python 的开源人脸识别工具,封装了 dlib 库的深度学习模型,具有易用性高、集成度强的特点。以下从技术实现、应用场景等维度分析其优劣势: 一、核心优势 1. 极简 API 设计,开发效率极高 代码量少:几行代码即可实现人脸检测、特征提取和比对…...

基于分布式状态机的集装箱智能道口软件架构方法
集装箱码头对进出场道口的通过能力始终是要求最高的,衡量道口的直接指标为道口通行效率,道口通行效率直接体现了集装箱码头的作业效率以及对外服务水平,进而直接影响到码头的综合能力。所以,码头普遍使用智能道口实现24小时无人值…...
Oracle的Hint
racle的Hint是用来提示Oracle的优化器,用来选择用户期望的执行计划。在许多情况下,Oracle默认的执行方式并不总是最优的,只不过由于平时操作的数据量比较小,所以,好的执行计划与差的执行计划所消耗的时间差异不大&…...
手动事务的使用
使用原因: 公司需要写一个定时任务,涉及增改查操作, 定时将前端页面配置的字典数据(标签数据)同步到数据库特定的表(标签表) 查询字典表数据 字典有,数据库表没有新增 都有,判断名称,名称不同修…...

Vue 树状结构控件
1、效果图如下所示: 2、网络请求的数据结构如下: 3、新建插件文件:menu-tree.vue,插件代码如下: <template><div class"root"><div class"parent" click"onParentClick(pare…...
Spring Boot的启动流程,以及各个扩展点的执行顺序
目录 1. 初始化阶段执行顺序 1.1 Bean的构造方法(构造函数) 1.2 PostConstruct 注解方法 1.3 InitializingBean 的 afterPropertiesSet() 1.4 Bean(initMethod "自定义方法") 2. 上下文就绪后的扩展点 2.1 ApplicationContext 事件监听…...

【LUT技术专题】图像自适应3DLUT代码讲解
本文是对图像自适应3DLUT技术的代码解读,原文解读请看图像自适应3DLUT文章讲解 1、原文概要 结合3D LUT和CNN,使用成对和非成对的数据集进行训练,训练后能够完成自动的图像增强,同时还可以做到极低的资源消耗。下图为整个模型的…...
Apache Doris 在数据仓库中的作用与应用实践
在当今数字化时代,企业数据呈爆炸式增长,数据仓库作为企业数据管理和分析的核心基础设施,其重要性不言而喻。而 Apache Doris,作为一款基于 MPP(Massively Parallel Processing,大规模并行处理)…...