GO-学习-03-基本数据类型
数据类型:基本数据类型和复合数据类型
基本数据类型:整型、浮点型、布尔型、字符串
复合数据类型:数组、切片、结构体、函数、map、通道(channel)、接口
整型:

package main
import "fmt"
import "unsafe"
func main(){//1.定义int类型 默认int64var num1 int = 10fmt.Printf("num=%v 类型:%T",num1,num1)//2.int8的范围演示var num2 int8 = 100//var num2 int8 = 128 //超出范围//unsafe.Sizeof 查看不同长度的整型 在内存里面的存储空间var num3 int8 =66fmt.Printf("num=%v 类型:%T",num3,num3)fmt.Printf(unsafe.Sizeof(num3)) // 1 一个字节 8位1字节//3.uint8的范围var num4 = 255 //var num4 = -2 //错误////int 不同长度的直接转换var a1 int32 = 10var a2 int64 = 20fmt.Println(int64(a1)+a2)fmt.Println(a1+int32(a2))//高位转移低维可能会溢出,导致错误//6.数字字面量语法 便于开发者以二进制,八进制,十六进制浮点数的格式定义数v1 := 0b00101101 //自动识别为二进制00101101=101101 也就是十进制的45v2 := 0o377 //代表八进制//%d 代表10进制输出,%b代表2进制,%o代表8进制 %x代表16进制 %v代表原样输出 v3 := 1fmt.Printf("num=%v 类型:%T",v3,v3) //9 intfmt.Printf("num=%d 类型:%T",v3,v3) //9fmt.Printf("num=%b 类型:%T",v3,v3) //1001fmt.Printf("num=%o 类型:%T",v3,v3) //11fmt.Printf("num=%x 类型:%T",v3,v3) //9
}
数字字面量语法是一种便于开发者以不同进制格式定义数的语法。这允许开发者以二进制、八进制、十进制和十六进制的形式来表示数字。
以下是各种进制数字字面量的示例:
- 二进制:以0b或0B开头,后面跟着一串由0和1组成的数字序列。例如:0b101010 表示42。
- 八进制:以o开头,后面跟着一串由0到7的数字组成的序列。例如:042 表示34。
- 十进制:普通的整数表示。例如:123 表示123。
- 十六进制:以0x或0X开头,后面跟着一串由0到9和A到F(或a到f)的数字和字母组成的序列。例如:0x1A 表示26。
除了整数,浮点数也可以使用数字字面量语法表示。浮点数可以使用十进制或科学计数法表示。例如:3.14 表示圆周率π,而2.5e2 表示250。
数字字面量语法提供了一种方便的方式来定义不同进制和浮点数的数字。这在编程中经常用于表示特定的数值或进行数值转换。
Go语言的基本数据类型包括以下几种:
-
bool:布尔类型,取值为true或false。
-
整数类型:包括int和uint,分别表示有符号整数和无符号整数。根据不同的位数,还包括int8、int16、int32、int64和uint8、uint16、uint32、uint64这些具体的整数类型。
-
浮点型:包括float32和float64,分别表示32位和64位的浮点数。
-
字符串类型:用于表示文本字符串,由一串字符组成。
-
字符类型:用于表示单个Unicode字符。
-
数组类型:用于存储固定数量的相同类型的元素。
-
切片类型:类似于数组,但长度可变。
-
结构体类型:用于自定义复杂的数据结构,可以包含多个不同类型的字段。
-
指针类型:用于存储变量的内存地址。
-
函数类型:表示函数的类型。
-
接口类型:用于定义一组方法的集合。
-
映射类型:用于存储键值对的集合。
-
通道类型:用于在多个goroutine之间进行通信。
这些基本数据类型在Go语言中都有对应的关键字和语法来表示和使用。通过组合和使用这些基本数据类型,开发者可以构建出更复杂的数据结构和逻辑。Go语言的基本数据类型包括以下几种:
-
bool:布尔类型,取值为true或false。
-
整数类型:包括int和uint,分别表示有符号整数和无符号整数。根据不同的位数,还包括int8、int16、int32、int64和uint8、uint16、uint32、uint64这些具体的整数类型。
-
浮点型:包括float32和float64,分别表示32位和64位的浮点数。
-
字符串类型:用于表示文本字符串,由一串字符组成。
-
字符类型:用于表示单个Unicode字符。
-
数组类型:用于存储固定数量的相同类型的元素。
-
切片类型:类似于数组,但长度可变。
-
结构体类型:用于自定义复杂的数据结构,可以包含多个不同类型的字段。
-
指针类型:用于存储变量的内存地址。
-
函数类型:表示函数的类型。
-
接口类型:用于定义一组方法的集合。
-
映射类型:用于存储键值对的集合。
-
通道类型:用于在多个goroutine之间进行通信。
这些基本数据类型在Go语言中都有对应的关键字和语法来表示和使用。通过组合和使用这些基本数据类型,开发者可以构建出更复杂的数据结构和逻辑。
Go语言是谷歌公司开发的一种编程语言。Go语言的由来可以追溯到2007年,当时Google的工程师Robert Griesemer、Rob Pike和Ken Thompson开始着手开发一种新的编程语言,目标是创造一种更简单、更高效、更安全的编程语言,以满足Google内部大规模软件开发的需求。
他们认为现有的编程语言在处理并发程序和多核计算方面存在一些问题,因此决定开发一种更适合并发编程的语言。这个项目最初被称为“20%项目”,因为参与者可以在工作时间的20%内进行开发。
在开发过程中,他们吸取了其他编程语言的优点,如C、Pascal、Algol等,并且对Go语言进行了一些创新的设计,以提高开发效率和代码的可读性。
2009年,Go语言的第一个固定版本发布,正式对外开放。随后,Go语言逐渐获得了广泛的关注和使用,得到了开发者的认可。
Go语言的目标是简洁、高效和可靠,其特点包括:静态类型、垃圾回收、编译型、并发编程支持等。Go语言在Google内部得到了广泛应用,并且在全球范围内被广泛采用,成为一种流行的编程语言。Go语言是谷歌公司开发的一种编程语言。Go语言的由来可以追溯到2007年,当时Google的工程师Robert Griesemer、Rob Pike和Ken Thompson开始着手开发一种新的编程语言,目标是创造一种更简单、更高效、更安全的编程语言,以满足Google内部大规模软件开发的需求。
他们认为现有的编程语言在处理并发程序和多核计算方面存在一些问题,因此决定开发一种更适合并发编程的语言。这个项目最初被称为“20%项目”,因为参与者可以在工作时间的20%内进行开发。
在开发过程中,他们吸取了其他编程语言的优点,如C、Pascal、Algol等,并且对Go语言进行了一些创新的设计,以提高开发效率和代码的可读性。
2009年,Go语言的第一个固定版本发布,正式对外开放。随后,Go语言逐渐获得了广泛的关注和使用,得到了开发者的认可。
Go语言的目标是简洁、高效和可靠,其特点包括:静态类型、垃圾回收、编译型、并发编程支持等。Go语言在Google内部得到了广泛应用,并且在全球范围内被广泛采用,成为一种流行的编程语言。
相关文章:
GO-学习-03-基本数据类型
数据类型:基本数据类型和复合数据类型 基本数据类型:整型、浮点型、布尔型、字符串 复合数据类型:数组、切片、结构体、函数、map、通道(channel)、接口 整型: package main import "fmt" im…...
高并发场景下,系统的保护机制
伴随着分布式,微服务项目的快速发展。各个微服务的调用和通讯难免会出现依赖关系,如果上游服务在依赖下游服务的时候下游服务出现了故障从而导致下游服务的不可用,进一步导致了上游的服务被拖垮,就会发生服务雪崩,故障…...
服务器构建私有npm库(Docker + Verdaccio)
npm官网有时候因为网络原因包推不上去,那就简单构建个私有库 私有库不会被共享,且配置不需要太高1h2G就行 1.需要安装Docker,这个跳过了 2.生成配置文件 mkdir /home/verdaccio cd /home/verdaccio mkdir conf && mkdir storage &am…...
LabVIEW做二次开发时应该注意哪些方面?
在使用LabVIEW进行二次开发时,以下几个方面需要特别注意: 需求明确化: 确认并详细记录客户的需求,明确系统的功能、性能、可靠性等要求。制定详细的需求文档,并与客户反复确认,避免后期的需求变更和误解。 …...
docker配置上网代理获取镜像
一、添docker子配置档设置 1、创建目录 mkdir /etc/systemd/system/docker.service.d 2、创建http-proxy.conf文件,增加以下内容 cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF [Service] Environment“HTTP_PROXYhttp://192.168.0.2:8118…...
SqlSugar删除没有定义主键的实体类对应的数据库表数据
一般而言,使用SqlSugar的DbFirst功能创建数据库表实体类时,如果数据库表有主键,生成的实体类对应属性也会标识为主键,如下图所示。 但有时候生成的实体类没有自动配置主键,这时可以通过以下方式进行删除操作&…...
虚拟机复制后网络不可用,报错“network.service - LSB: Bring up/down networking”
查询IP地址,eth33 没有显示IP地址 尝试重启,有报错,并且有提示,按照提示执行下看看 解决办法 chkconfig NetworkManager offsystemctl disable NetworkManager.serviceservice NetworkManager stopservice network restart 之后检…...
Redis 7.x 系列【30】集群管理命令
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 集群信息2.1 CLUSTER INFO 3. 节点管理3.1 CLUSTER MYID3.2 CLUSTER NODES3…...
将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式
TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK),专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型,从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化,包括层融合(layer …...
Hello SLAM(在Linux中实现第一个C++程序)
首先需要安装vim编辑器,输入命令 sudo apt install vim 在Ubuntu上安装好vim编辑器后,创建路径(/home/slambook/ch2),在该路径下创建一个cpp文档(touch hello.c),通过vim编辑器进行…...
IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验
研发项目往往包含很多复杂的流程和具体的细节。因此,一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中,研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…...
C++ 鼠标轨迹API【神诺科技SDK】
一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.…...
设计模式|观察者模式
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有观察者都会收到通知并更新。观察者模式常用于实现事件处理系统、发布-订阅模式等。在项目中,…...
python自动化运维 通过paramiko库和time库实现服务器自动化管理
目录 一.前言 二. 代码实现以及解析 2.1导入必要的库 2.2定义服务器信息 2.3创建 SSH 客户端连接函数 2.4执行远程命令函数 2.5获取系统信息函数 2.6重启服务函数 2.7 主函数 三.致谢 一.前言 在数字化时代,IT 基础设施的规模和复杂性不断增长&am…...
HTML常用的转义字符——怎么在网页中写“<div></div>”?
一、问题描述 如果需要在网页中写“<div></div>”怎么办呢? 使用转义字符 如果直接写“<div></div>”,编译器会把它翻译为块,类似的,其他的标签也是如此,所以如果要在网页中写类似于“<div…...
shell-awk文本处理工具
1、awk概述 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …...
如何在测试中保护用户隐私!
在当今数据驱动的时代,用户隐私保护成为了企业和开发团队关注的焦点。在软件测试过程中,处理真实用户数据时保护隐私尤为重要。本文将介绍如何在测试中保护用户隐私,并提供具体的方案和实战演练。 用户隐私保护的重要性 用户隐私保护不仅是法…...
ARCGIS PRO DSK GraphicsLayer创建文本要素
一、判断GraphicsLayer层【地块注记】是否存在,如果不存在则新建、如果存在则删除所有要素 Dim GraphicsLayer pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() 获取当前map对象中的GetLayer图层 Await Queue…...
看板项目之vue代码分析
目录: Q1、vue项目怎么实现的输入localhost:8080就能自动跳到index页面Q2、组合饼状图如何实现Q3、vue项目如何实现环境的切换Q4、vue怎么实现vue里面去调用js文件里面的函数 Q1、vue项目怎么实现的输入localhost:8080就能自动跳到index页面 …...
lua 游戏架构 之 游戏 AI (七)ai_dead
定义一个名为ai_dead的类,继承自ai_base类。这个类用于处理游戏中AI在死亡状态下的行为逻辑。以下是对代码的具体解释: 1. **引入基类**: - 使用require函数引入ai_base类,作为基础类。 2. **定义ai_dead类**: …...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
