当前位置: 首页 > news >正文

Go语言入门指南(二): 数据类型

文章创作不易,麻烦大家点赞关注转发一键三连。


在上一篇文章,我们已经完成了开发环境的搭建,成功创建了第一个“Hello, World”程序,并且对变量的声明和初始化有了初步的认识。在这篇文章中,我们将主要介绍Go语言的数据类型。

数字类型

Go语言有多种数据类型。譬如整形就有int、int8、int16、int32和int64。不同的整数类型适用于不同的存储需求,这取决于数据的范围和内存使用的考量。例如:

package main
import "fmt"
func main() {var smallNum int8 = 127var largeNum int64 = 9223372036854775807fmt.Println("int8 存储的值:", smallNum)fmt.Println("int64 存储的值:", largeNum)
}


上述代码展示了不同大小的整数类型的使用。int8存储范围较小,适用于表示较小的整数,而int64可以存储更大范围的整数。这样的设计有助于合理利用内存,避免浪费。

浮点数类型包括float32和float64。float64提供了更高的精度,在涉及到精确计算时更为适用。

package main
import "fmt"
func main() {var num1 float32 = 3.14159var num2 float64 = 3.141592653589793fmt.Println("float32 存储的值:", num1)fmt.Println("float64 存储的值:", num2)
}


这里可以看出float64能更精确地表示圆周率,在需要高精度计算的科学计算或金融领域,float64会是更好的选择。

字符串

Go语言中,字符串的创建很简单,可以使用双引号或反引号。双引号是常规的字符串,而反引号允许创建多行字符串。

package main
import "fmt"
func main() {str1 := "Hello, Go!"str2 := `This is a
multi-line
string.`fmt.Println(str1)fmt.Println(str2)
}


通过此代码,我们看到str2使用反引号创建了多行字符串,这为处理多行文本提供了便利。

我们可以使用len函数来获取字符串的长度。

package main
import "fmt"
func main() {str := "Go Programming"length := len(str)fmt.Println("字符串的长度为:", length)
}


此例通过len函数准确计算出字符串str的长度,这在处理字符串时是一个常用操作。

布尔类型

布尔类型只有两个值,即true和false,主要用于逻辑判断。

package main
import "fmt"
func main() {var flag bool = trueif flag {fmt.Println("条件为真。")} else {fmt.Println("条件为假。")}
}


这个例子中,根据布尔变量flag的值,程序会输出不同的信息,它在控制程序流程方面发挥着重要作用,例如在条件判断和循环中决定程序的执行路径。

常量的使用

常量使用const关键字定义,一旦定义,其值在程序运行期间不会改变,这保证了程序的稳定性和可预测性。

package main
import "fmt"
func main() {const pi = 3.14159fmt.Println("常量pi的值:", pi)
}


此代码中,pi被定义为常量,它的值始终是3.14159,不会被修改,常用于存储不会改变的数值,如数学常数。

数组

数组是一种存储相同类型元素的固定长度的数据结构。

package main
import "fmt"
func main() {var arr [3]intarr[0] = 1arr[1] = 2arr[2] = 3fmt.Println(arr)
}


该代码创建了一个长度为3的整型数组,并为其元素赋值。需要注意的是,数组的长度在声明时就确定,不能改变。

切片

切片是一种比数组更灵活的数据结构,它的长度可以动态变化。

package main
import "fmt"
func main() {slice := []int{1, 2, 3}slice = append(slice, 4)fmt.Println(slice)
}


在这个例子中,我们使用append函数向切片添加元素,展现了切片的动态特性,它可以根据需要灵活调整长度,更适合存储元素数量不确定的数据集合。

类型转换

Go是强类型语言,不同类型的数据在操作时可能需要类型转换。

package main
import "fmt"
func main() {var numInt int = 10var numFloat float64 = float64(numInt)fmt.Println("转换后的浮点数:", numFloat)
}


此代码将整数numInt转换为浮点数numFloat,这在不同类型数据的混合运算或函数调用时是很常见的操作。

指针

指针存储变量的内存地址,为我们提供了更底层的内存操作能力。

package main
import "fmt"
func main() {var num int = 5var ptr *int = &numfmt.Println("变量的值:", num, "变量的地址:", ptr, "地址指向的值:", *ptr)
}

这里,&num获取变量num的地址存储在ptr中,*ptr则是通过指针访问该地址存储的值,指针在处理复杂数据结构和性能优化时非常有用。

相关文章:

Go语言入门指南(二): 数据类型

文章创作不易,麻烦大家点赞关注转发一键三连。 在上一篇文章,我们已经完成了开发环境的搭建,成功创建了第一个“Hello, World”程序,并且对变量的声明和初始化有了初步的认识。在这篇文章中,我们将主要介绍Go语言的数据…...

2025.1.26机器学习笔记:C-RNN-GAN文献阅读

2025.1.26周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 总结 文献阅读 题目信息 题目: C-RNN-GAN: Continuous recurrent neural networks with adversarial training会议期刊: NIPS作者: Olof Mogren发表时间…...

FAST-DDS and ROS2 RQT connect

reference: FAST-DDS与ROS2通信_ros2 收fastdds的数据-CSDN博客 software version: repositories: foonathan_memory_vendor: type: git url: https://github.com/eProsima/foonathan_memory_vendor.git version: v1.1.0 fastcdr: …...

GESP2024年3月认证C++六级( 第三部分编程题(2)好斗的牛)

参考程序&#xff08;暴力枚举&#xff09; #include <iostream> #include <vector> #include <algorithm> using namespace std; int N; vector<int> a, b; int ans 1e9; int main() {cin >> N;a.resize(N);b.resize(N);for (int i 0; i &l…...

记一次STM32编译生成BIN文件过大的问题(基于STM32CubeIDE)

文章目录 问题描述解决方法更多拓展 问题描述 最近在一个项目中使用了 STM32H743 单片机&#xff08;基于 STM32CubeIDE GCC 开发&#xff09;&#xff0c;它的内存分为了 DTCMRAM RAM_D1 RAM_D2 …等很多部分。其中 DTCM 的速度是比通常的内存要快的&#xff0c;缺点是不支持…...

【暴力洗盘】的实战技术解读-北玻股份和三变科技

龙头的上攻与回调动作都是十分惊人的。不惊人不足以吸引投资者的关注&#xff0c;不惊人也就不能成为龙头了。 1.建筑节能概念--北玻股份 建筑节能&#xff0c;是指在建筑材料生产、房屋建筑和构筑物施工及使用过程中&#xff0c;满足同等需要或达到相同目的的条件下&#xf…...

Day42:列表的组合

在Python 中&#xff0c;列表的组合是指将两个或多个列表合并成一个新的列表。Python 提供了多种方法来实现这一操作&#xff0c;每种方法都有其特定的应用场景。今天我们将学习如何通过不同的方式组合列表。 1. 使用 运算符进行列表合并 最直接的方式是使用 运算符&#x…...

mantisbt添加修改用户密码

文章目录 问题当前版本安装流程创建用户修改密码老的方式探索阶段 问题 不太好改密码啊。貌似必须要域名要发邮件。公司太穷&#xff0c;看不见的东西不关心&#xff0c;只能改源码了。 当前版本 当前mantisbt版本 2.27 php版本 7.4.3 安装流程 &#xff08;下面流程不是…...

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件&#xff0c;该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…...

简单树形菜单

引言 在网页开发中&#xff0c;树形菜单是一种非常实用的&#xff0c;它可以清晰地展示具有层级关系的数据&#xff0c;并且能够方便用户进行导航和操作。 整体思路 整个项目主要分为三个部分&#xff1a;HTML 结构搭建、CSS 样式设计和 JavaScript 交互逻辑实现。通过 XMLHt…...

Windows 靶机常见服务、端口及枚举工具与方法全解析:SMB、LDAP、NFS、RDP、WinRM、DNS

在渗透测试中&#xff0c;Windows 靶机通常会运行多种服务&#xff0c;每种服务都有其默认端口和常见的枚举工具及方法。以下是 Windows 靶机常见的服务、端口、枚举工具和方法的详细说明&#xff1a; 1. SMB&#xff08;Server Message Block&#xff09; 端口 445/TCP&…...

RNN实现阿尔茨海默症的诊断识别

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 导入数据 import torch.nn as nn import torch.nn.functional as F import torchvision,torch from sklearn.preprocessing import StandardScaler from torch.utils.data import TensorDatase…...

14-6-1C++STL的list

(一&#xff09;list容器的基本概念 list容器简介&#xff1a; 1.list是一个双向链表容器&#xff0c;可高效地进行插入删除元素 2.list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[ ]操作符 &#xff08;二&#xff09;list容器头部和尾部的操作 list对象的默…...

Redis事务机制详解与Springboot项目中的使用

Redis 的事务机制允许将多个命令打包在一起&#xff0c;作为一个原子操作来执行。虽然 Redis 的事务与关系型数据库的事务有所不同&#xff0c;但它仍然提供了一种确保多个命令顺序执行的方式。以下是 Redis 事务机制的详细解析&#xff1a; 1. Redis 事务的基本概念 Redis 事…...

DeepSeek-R1,用Ollama跑起来

# DeepSeek-R1横空出世&#xff0c;超越OpenAI-o1&#xff0c;教你用Ollama跑起来 使用Ollama在本地运行DeepSeek-R1的操作指南。 DeepSeek-R1作为第一代推理模型&#xff0c;在数学、代码和推理任务上表现优异&#xff0c;与OpenAI-o1模型不相上下。 将此类模型部署到本地&am…...

Leecode刷题C语言之组合总和②

执行结果:通过 执行用时和内存消耗如下&#xff1a; int** ans; int* ansColumnSizes; int ansSize;int* sequence; int sequenceSize;int** freq; int freqSize;void dfs(int pos, int rest) {if (rest 0) {int* tmp malloc(sizeof(int) * sequenceSize);memcpy(tmp, seque…...

YOLOv8改进,YOLOv8检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等,全网独发

摘要 作者提出一种新的检测头,称为“动态头”,旨在将尺度感知、空间感知和任务感知统一在一起。如果我们将骨干网络的输出(即检测头的输入)视为一个三维张量,其维度为级别 空间 通道,这样的统一检测头可以看作是一个注意力学习问题,直观的解决方案是对该张量进行全自…...

【PyQt】QThread快速创建多线程任务

pyqt通过QThread快速创建多线程任务 在 PyQt5 中使用多线程时&#xff0c;需要注意 GUI 线程&#xff08;主线程&#xff09; 和 工作线程 的分离。PyQt5 的主线程负责处理 GUI 事件&#xff0c;如果在主线程中执行耗时任务&#xff0c;会导致界面卡顿甚至无响应。因此&#x…...

智能码二维码的成本效益分析

以下是智能码二维码的成本效益分析&#xff1a; 成本方面 硬件成本 标签成本&#xff1a;二维码标签本身价格低廉&#xff0c;即使进行大规模应用&#xff0c;成本也相对较低。如在智能仓储中&#xff0c;塑料托盘加二维码方案的标签成本几乎可以忽略不计4。扫描设备成本&…...

企业财务管理系统的需求设计和实现

该作者的原创文章目录&#xff1a; 生产制造执行MES系统的需求设计和实现 企业后勤管理系统的需求设计和实现 行政办公管理系统的需求设计和实现 人力资源管理HR系统的需求设计和实现 企业财务管理系统的需求设计和实现 董事会办公管理系统的需求设计和实现 公司组织架构…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...