[go语言]数据类型

目录

知识结构

整型、浮点型

1.整型

2.浮点型

复数、布尔类型

1.复数

2.布尔类型

字符与字符串

1.字符串的格式化

2.字符串的截取

3.格式化好的字符串赋值给量

4.字符串的转换

5.strings包


知识结构

整型、浮点型

1.整型

在Go语言中,整型数据是一种基本的数据类型,用于表示整数。Go语言提供了多种整型数据类型,包括有符号和无符号的整型,以及不同大小的整型。

以下是Go语言中常用的整型数据类型:

int:有符号整数类型,根据平台和编译器,其大小可能有所不同。在大多数现代系统上,int的大小为32位或64位。

int8:有符号8位整数类型

int16:有符号16位整数类型

int32:有符号32位整数类型

int64:有符号64位整数类型

uint:无符号整数类型,大小与int相同,但只能表示非负整数。

uint8:无符号8位整数类型

uint16:无符号16位整数类型

uint32:无符号32位整数类型

uint64:无符号64位整数类型

在进行整形数据的处理时,需要选择合适的整型类型进行数据处理;

关于不同进制数的表示如下:

2.浮点型

在Go语言中,浮点型数据用于表示带有小数点的数值。Go语言提供了两种类型的浮点数:float32float64

  1. float32:32位单精度浮点数,其范围约为±1.18E-38到±3.4E+38,精度约为7位小数。
  2. float64:64位双精度浮点数,也称为double,其范围约为±2.23E-308到±1.80E+308,精度约为15位小数。

浮点型数据最主要的特点就是:不精确:

package main
import "fmt"

// 只有同类型才能参与运算;位数不同也不能匹配
func main() {
	//浮点类型 --- 不精确的,二进制存储小数位
	//小数点不能精确表示
	var f1 float32
	var f2 float32
	var f3 float32
	f1 = 0.111111
	f2 = 0.222222
	f3 = 0.333333
	if f1+f2 == f3 {
		fmt.Println("ok")
	} else {
		fmt.Println("error")
	}
}

该代码运行的结果就是“error”,因为浮点型数据在计算机中的表示采用的是IEEE 754标准,该标准规定了32位单精度浮点数和64位双精度浮点数的表示方法。理论上,32位浮点数最多能表示的数是2^32个,而小数却有无数个,因此,无法精确表示所有的小数。

复数、布尔类型

这两个数据类型就简单了解即可,下面是相关演示

1.复数

package main

import "fmt"

func main(){
    c := 5+2i
    fmt.Println(c)
    fmt.Printf("c type is %T\n",c)
}

这种带了“i”的就是复数,所以展现的类型是complex128,也就是复数形式。

2.布尔类型

bool类型默认取值为false:

字符与字符串

1.字符串的格式化

%d十进制整数输出
%x十六进制整数输出
%T输出数据类型
%c转换成字符输出
%f浮点类型数输出
%.2f保留两位小数输出
%%输出百分号本身
%s输出字符串

2.字符串的截取

pacakge main
import "fmt"

func main() {
	str4 := "abcdefg"
	fmt.Println(str4[4])           //取到下标为4的字符,即e,输出e的ASCII码值,也就是101
	fmt.Println(string(str4[0:5])) //左闭右开区间,取到qbcde
	fmt.Println(string(str4[5:]))  //fg
}

3.格式化好的字符串赋值给量

fmt.Sprintf 是 Go 语言中的一个函数,它用于将格式化的数据转换成字符串。这个函数是 fmt 包的一部分,通常用于构建字符串。

4.字符串的转换

int-->float:直接用float32()就可以:

	num1 := 100
	f1 := float64(num1)

但是字符串的转换就要用到一个包:strconv

Atoi将字符串转换为整型数,要保证这个字符串是可以转换的,比如“100”“50”这样的字符串。

Itoa将整型转换为字符串。

func main() {
	//int --> string
	num := 100
	str1 := strconv.Itoa(num)
	fmt.Printf("%s type is %T\n", str1, str1)
	//string --> int
	str2 := "100"
	num2, _ := strconv.Atoi(str2)
	fmt.Printf("num2 type is %T\n", num2)
}

5.strings包

string包
contains:判断一个字符串s是否包含substr
fmt.Println(strings.Contains("abc", "a"))
count:计算substr在s中出现多少次
fmt.Println(strings.Count("aabbccdd", "ab"))
HasPrefix(s,prefix) 判断字符串s是否以prefix开头
HasSuffix(s,suffix) 判断字符串s是否以suffix结尾
Index(s,substr) 判断substr在s字符串中第一次出现的下标位置,如果没有找到就返回-1
Replace(s,old,new,n) 将s字符串中原来的old替换为新的new,替换n次,n为-1表示全部替换
Tolower(s) 将一个字符串全部转化为小写
ToUpper(s) 将一个字符串全部转化为大写
Split("ab:xy:mn",":")  :按照冒号将字符串进行切割   //[ab xy mn]

使用strings包的内容可以快速对字符串做出处理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索设计模式的魅力:抽象工厂模式的艺术

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,用于在不指定具体类的情况下创建一系列相关或相互依赖的对象。它提供了一个接口,用于创建一系列“家族”或相关依赖对象,而无需指定它们的具体类。 主要参…

Zookeeper启动报错常见问题以及常用zk命令

Zk常规启动的命令如下 sh bin/zkServer.sh start 启动过程如果存在失败,是没办法直接看出什么问题,只会报出来 Starting zookeeper … FAILED TO START 可以用如下命令启动,便于查看zk启动过程中的详细错误 sh bin/zkServer.sh start-for…

页面数据类型为json,后端接受json数据

项目结构 依赖pom.xml <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework…

ES可视化工具--ElasticHD

说明 ElasticHD 是 github 上的一个开源的项目&#xff0c;所以他没有官方网站&#xff0c;但 github 上的项目界面也可称为是它的官方界面了。 在 github 上直接搜索 ElasticHD 即可找到它&#xff0c;下面我将留下它的直接跳转链接。ElasticHD 下载 在 github 上搜索到之后…

【MCAL】ADC模块详解

目录 前言 正文 1.ADC模块介绍 2.关键概念及依赖的模块 2.1 ADC依赖的模块 3.ADC功能示例 3.1 ADC Buffer Access Mode示例 3.1.1配置&#xff08;Configuration&#xff09; 3.1.2 初始化&#xff08;Initialization&#xff09; 3.1.3 Adc_GetStreamLastPointer的使…

漏洞检测和评估【网站子域扫描工具02】

上一篇&#xff1a;爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中&#xff0c;有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估&#xff0c;比如Nmap、Sublist3r等。 1.端口扫描 以下是一个简单的示例代码&#xff0c;展示了如何使用Nmap进行基本的端口扫…

无法解析服务器的名称或地址/Wsl/0x80072eff/win10 WSL2问题解决Wsl 0x800701bc/Wsl:0x80041002

无法解析服务器的名称或地址 和 Wsl/0x80072eff 1.连VPN&#xff0c;推荐的VPN如下。(如一直显示无法连接&#xff0c;则推荐使用VPN) Anycast加速器 (any4ga.com) 优点&#xff1a;无限GB 缺点&#xff1a;较贵&#xff0c;通过银行卡充值9折后的价格是每月45元左右 …

DC-1靶机刷题记录

靶机下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1GX7qOamdNx01622EYUBSow?pwd9nyo 提取码&#xff1a;9nyo 参考答案&#xff1a; https://c3ting.com/archives/kai-qi-vulnhnbshua-tiDC-1.pdf【【基础向】超详解vulnhub靶场DC-1】 https://www.bilibi…

加解密算法整理(对称加密、非堆成加密、散列函数)

加解密算法是现代密码学核心技术&#xff0c;从设计理念和应用场景上可以分为两大基本类型&#xff0c;如下表所示。 算法类型特点优势缺陷代表算法对称加密加解密的密钥相同计算效率高&#xff0c;加密强度高需提前共享密钥&#xff0c;易泄露DES、3DES、AES、IDEA非对称加密…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源&#xff1a;SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def&#xff0c;sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动

目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中&#xff0c;但是不会进一步&#xff0c;导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…

EMQX安装和Java使用

一、EMQX介绍 EMQX是大规模分布式MQTT消息服务器&#xff0c;可以高效可靠连接海量物联网设备&#xff0c;实时处理分发消息与事件流数据&#xff0c;助力构建关键业务的物联网与云应用。EMQX 作为物联网应用开发和物联网平台搭建必须用到的基础设施软件&#xff0c;主要在边缘…

AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?

在人工智能&#xff08;AI&#xff09;的领域中&#xff0c;我们经常听到训练&#xff08;Training) 和 推理&#xff08;Inference) 这两个词汇&#xff0c;它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念&#xff0c;可以更加自然而生动地理…

迅为RK3588开发板编译 Buildroot单独编译图形化界面(打包镜像)

上面 Kernel/U-Boot/Recovery/Rootfs 各个部分的编译后&#xff0c;将打包要用到的所有固件移动到 rockdev 目录下&#xff0c;然后打包为完整的 update.img 镜像。 首先在 linux 源码目录下输入以下命令进入编译的 UI 界面&#xff0c;进入之后如下所示&#xff1a; ./buil…

Flutter:跨平台移动应用开发的未来

Flutter&#xff1a;跨平台移动应用开发的未来 引言 Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包&#xff0c;用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布&#xff0c;并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来…

C++大学教程(第九版)5.19求Π的值

题目 代码 #include <bits/stdc.h> using namespace std;int main() {double pai 0;for (int count 1, i 1; count < 1000; i 2, count){int flag 1;if (count % 2 0){flag -1;}pai flag * (4.0 / (i * 1.0));cout << "当取前" << co…

C++ 之LeetCode刷题记录(十三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可…

监控系统——Zabbix

目录 Zabbix概述 Zabbix 监控原理 Zabbix 与 Prometheus的区别 Zabbix 6.0 新特性 Zabbix 6.0 功能组件 Zabbix Server 数据库 Web 界面 Zabbix Agent Zabbix Proxy Java Gateway Zabbix 6.0 部署 部署 zabbix 服务端 添加 zabbix 客户端主机 自定义监控内容…

#LLMOps##AIGC# Dify_构建本地知识库问答应用-生成Al应用的创新引擎 用于构建助手API和GPT的开源开发平台

github&#xff1a; https://github.com/langgenius/dify/blob/main/README_CN.md 介绍文档&#xff1a;https://docs.dify.ai/getting-started/readme Dify 介绍 Dify 笔记 Dify 是什么&#xff1f; 开源的大语言模型&#xff08;LLM&#xff09;应用开发平台融合了后端即服…

vue二次封装ant-design-vue中的Modal弹窗组件,实现拖拽,全屏两种功能,原有参数属性不变

在我们的项目的有的地方需要用弹框的拖拽&#xff0c;以及弹窗自定义全屏显示的需求&#xff0c;所以再次将二次合一&#xff0c;同时弹框里面内容自适应屏幕高度 在ant-design-vue中&#xff0c;已经实现了拖拽&#xff0c;全屏的功能&#xff0c;下面是ant官网的示例 自定义…