15分钟学Go 第5天:数据类型

第5天:数据类型

在Go语言中,数据类型是构成程序的重要基础,它们定义了可以在程序中使用的数据特征。了解不同的数据类型及其用途将帮助我们更有效地编写Go代码。在本章节中,我们将详细探讨Go语言的基本数据类型。

1. 数据类型的概述

Go语言的数据类型主要分为两大类:基本数据类型和复合数据类型。基本数据类型包括数字、布尔值、字符串等;复合数据类型则包括数组、切片、映射、结构体和接口等。

1.1 基本数据类型

数据类型说明示例
int整数类型var a int = 42
float64浮点数类型var b float64 = 3.14
bool布尔类型,只有truefalse两种var c bool = true
string字符串类型,表示文本var d string = "hello"

1.2 复合数据类型

复合数据类型由基本数据类型构成,具体类别将会在后续章节中介绍。

2. 基本数据类型详解

2.1 整数类型(int)

Go语言的整数类型可变,具体取决于平台,但它通常可以表示32位或64位的有符号整数。Go语言还提供了多种整数的具体类型,如下所示:

类型描述例子
int8有符号8位整数var x int8 = 127
int16有符号16位整数var y int16 = 10000
int32有符号32位整数var z int32 = 2147483647
int64有符号64位整数var w int64 = 9223372036854775807
uint8无符号8位整数var a uint8 = 255
uint16无符号16位整数var b uint16 = 65535
uint32无符号32位整数var c uint32 = 4294967295
uint64无符号64位整数var d uint64 = 18446744073709551615
示例代码
package mainimport ("fmt"
)func main() {var myInt int = 42var myUint uint = 100fmt.Println("我的整型:", myInt, "我的无符号整型:", myUint)
}
代码执行流程
开始
声明变量myInt, myUint
打印变量
结束

2.2 浮点数类型(float64)

浮点数用于表示带有小数部分的数值。Go语言提供了float32float64两种浮点类型,其中float64是默认类型。

类型描述例子
float3232位浮点数var f1 float32 = 3.14
float6464位浮点数var f2 float64 = 3.14159
示例代码
package mainimport ("fmt"
)func main() {var f float64 = 3.1415fmt.Printf("浮点数: %.2f\n", f)
}
代码执行流程
开始
声明变量f
打印浮点数
结束

2.3 布尔类型(bool)

布尔类型用于表示真(true)或假(false)。可用于条件控制语句。

示例代码
package mainimport ("fmt"
)func main() {var isTrue bool = truevar isFalse bool = falsefmt.Println("布尔值1:", isTrue)fmt.Println("布尔值2:", isFalse)
}
代码执行流程
开始
声明布尔变量
打印布尔值
结束

2.4 字符串类型(string)

字符串是字符的序列,用双引号括起来。字符串的长度是可变的,支持Unicode字符。

示例代码
package mainimport ("fmt"
)func main() {var s string = "Hello, World!"fmt.Println("字符串:", s)
}
代码执行流程
开始
声明字符串变量
打印字符串
结束

3. 数据类型的选择与用途

3.1 整数类型的用途

  • 计数器:在循环或计数中使用。
  • 索引:在数组或切片中作为索引。

3.2 浮点数类型的用途

  • 科学计算:在需要精度的计算中使用。
  • 金融应用:涉及小数的财务计算中。

3.3 布尔类型的用途

  • 条件判断:在控制结构中用于判断条件。
  • 状态标志:表示某项操作的状态。

3.4 字符串类型的用途

  • 文本处理:在输出或输入文本中使用。
  • 数据交换:在API请求或响应时使用。

4. 注意事项

  • 类型转换:在进行不同数据类型之间的转换时,需要显式转换。

    var x int = 10
    var y float64 = float64(x) // 从int转换为float64
    
  • 零值:每种数据类型都有零值,如int的零值是0,bool的零值是false,string的零值是""。

5. 练习题与挑战

  1. 编写一个程序,计算并输出输入数字的平方。
  2. 创建一个程序,接受用户的姓名和年龄并打印出来。
  3. 实现一个布尔值判断,如果输入的数字大于100,输出"大于100",否则输出"小于等于100"。

6. 总结

在这一章节中,我们详细探讨了Go语言的基本数据类型,包括整数、浮点数、布尔值和字符串。通过示例代码和执行流程图,我们了解了不同数据类型的用途及选用场景。掌握这些基本数据类型是学习Go语言程序设计的重要一步。

附加资源

  • Go语言官方文档
  • Go语言图书推荐

怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter发送post请求

在jmeter中,有两种常用的请求方式,get和post.它们两者的区别在于get请求的参数一般是放在路径中,可以使用用户自定义变量和函数助手等方式进行参数化,而post请求的参数不能随url发送,而是作为请求体提交给服务器。而在…

Linux 手撕线程池

前言 线程池 是 池化技术 中很典型的一个,它旨在高效的管理和复用线程资源!在现在的计算机体系中,线程是执行任务(调度)的基本单位。然而,频繁的创建和销毁线程也会带来较大的开销,包括系统资源…

Unity之XR Interaction Toolkit 射线拖拽3DUI

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、想实现的功能二、实现原理1.UI挂在XRGrabInteractable、刚体、BoxCollder2.修改刚体属性3.加BoxCollder 总结 前言 VR项目里正常情况有放置两种3DUI的方式…

音视频基础知识分享

音视频基础知识分享 RKMedia的各个组件及其交互 首先上图: 考虑到公司业务主要是相机,所以,主要去关注图像数据流,对于音频数据流直接忽略。 图像数据流向: Camera Sensor将光信号转换成电信号(Raw数据&…

指针——函数指针数组

(一)前文回顾 1、前篇代码分析 void(*signal(int , void(*)(int)))(int) ; 那么这串代码究竟是什么呢? 别慌,让我们来一步一步拆解,首先我们通过之前的学习,已经明白了什么是函数指针(如果有…

基于Python实现“气象家园”自动签到

一、安装库 pip install OAFuncs 二、导入库 from OAFuncs.oa_sign.meteorological import sign_in_meteorological_home as sign三、签到 email your_email # 16031215qq.com password your_pwd sign(email, password…

VS Code开发qt项目

没整明白,尴尬 安装扩展 设置cmake路径 前提是已经安装了QT 报错 用msvc选windows启动,用mingw则选gdb启动

基于语音识别的停车共享小程序(lw+演示+源码+运行)

目 录 1 绪论1 1.1 课题研究背景1 1.2 研究现状1 1.3 论文结构安排1 2 系统关键技术2 2.1 微信小程序2 2.2 微信Web开发者工具2 2.3 JavaScript简介2 2.4 微信小程序API接口2 2.5 MYSQL数据库2 3 系统分析1 3.1 可行性分析1 3.1.1 技术可行性1 3.1.2 经济可行性1…

飞腾X100适配Ubuntu说明

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR(无类别域间路由) 目的IP & 当前路由器的子网掩码 …

不做邮箱投稿的奴隶,要做单位信息宣传考核计分投稿的主人

在我刚开始承担单位的信息宣传考核任务时,心中充满了激情与期待。作为一名普通员工,我深知信息宣传的重要性,它不仅关乎单位的形象,更是我们对外沟通的桥梁。然而,现实的残酷让我逐渐体会到了压力的沉重。 最初,我选择了通过邮箱进行投稿。这种方式听起来似乎是最优雅的选择,毕…

页面请求快速迁移至接口工具(apifox、postman) 进行针对性调试

文章目录 需求背景实操 需求背景 自动携带参数,仅进行少量更改 在功能模块开发前期,难免会有让后端协助造数据,对通业务流程的场景 不确定造的数据或者后端的改动是否满足自己的需求,改一次有问题又等着改了再看很浪费时间 调用接…

Redis可视化软件安装

Anther Redis Desktop Manager 软件链接: https://pan.baidu.com/s/1YxCxwoy12G_p8IR5KcPgmQ?pwd1111

CSS 设置网页的背景图片

背景 最近正好在写一个个人博客网站“小石潭记”,需要一张有水,有鱼的图片。正好玩原神遇到了类似场景,于是截图保存,添加到网站里面。以下是效果图: css 写个class,加到整个网页的body上 .bodyBg {ba…

C++ 中的友元(Friend)用法详解

什么是友元(Friend)?👭 友元 (C) | Microsoft Learn 在C中,友元(Friend)是一种机制,允许外部函数或类访问某个类的私有(private)或保护(protecte…

IDEA使用Alibaba Cloud Toolkit插件自动化部署jar包

一、下载插件 二、添加服务器主机 三、填写自己服务器配置 四、添加配置 五、配置说明 六、选择maven打包模块 七、maven打包后的jar包位置配一下 八、点击运行发现成功

重学SpringBoot3-Spring WebFlux简介

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Spring WebFlux简介 1. 什么是 WebFlux?2. WebFlux 与 Spring MVC 的区别3. WebFlux 的用处3.1 非阻塞 I/O 操作3.2 响应式编程模型3.3 更高…

Thread类的介绍

线程是操作系统中的概念,操作系统中的内核实现了线程这种机制,同时,操作系统也提供了一些关于线程的API让程序员来创建和使用线程。 在JAVA中,Thread类就可以被视为是对操作系统中提供一些关于线程的API的的进一步的封装。 多线…

PHP(一)从入门到放弃

参考文献:https://www.php.net/manual/zh/introduction.php PHP 是什么? PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML…

从新手到高手:Spring AOP的进阶指南

目录 一、AOP简介 1.1 AOP入门案例 1.2 AOP 优点 二、核心概念 2.1 切面(Aspect) 2.2 切点(PointCut) 2.3 通知(Advice) 2.4 织入(Weaving) 三、AOP 原理 3.1 CGLIB 与 JDK动态代理对比 3.2 切面优先级 四、总结 一、AOP简介 AOP(Aspect-Oriented Programming) 面向切面编…