golang学习笔记4-基本数据类型

声明:本人已有C,C++,Python基础,只写本人认为的重点,方便自己回顾。
go的数据类型如下
在这里插入图片描述
由于bool和c++类似,和go的区别是,bool的值只能取true和false,不能取整数,而且有默认值false。

一、整数型

整数型存放整数,默认值为0,其分类如下:
1.有符号整数
在这里插入图片描述
2.无符号整数
在这里插入图片描述
3.默认类型
在这里插入图片描述
4.一些细节
(1)在自动推导的声明中,整数型默认为int,比如var a=100,a就是int型。
(2)使用整数型变量时,遵循保小不保大的原则,即尽量使用占用空间较小的数据类型,比如年龄age,用byte就足够了。

二、查看变量的类型与占用大小

一般用包unsafe中的Sizeof()函数,当导入超过1个包时,我们一般将多个包一次声明,详见如下代码:

package mainimport ("fmt""unsafe"
)func main() {var n int = 10fmt.Printf("n的类型:%T,占用%d字节", n, unsafe.Sizeof(n))
}

其中Printf类似C的printf,%T表示数据类型。

三、浮点型

浮点型存放小数,其默认值也为0,类型只有两种,基本信息如下:
1.float的类型
在这里插入图片描述
显然,float32相当于C/C++中的float,float64相当于double,在开发中推荐使用64位float。
2.一些细节
(1)E是科学计数法,在go中,e和E一样。
(2)高精度转低精度会有精度损失,值会改变,因为尾数位丢失了,这是计算机组成原理的内容,不做赘述。

四、字符型

go中没有专门的字符型,存储字符一般用byte。由于go默认用utf8编码,一个字符占1-4个字节,其中中文字符一般占3个字节,所以非英文字符一般用整数型存储,当然,浮点型也可以存储字符。显然,用utf8统一编码避免了乱码的情况。
一些细节:
1.字符的本质是整数,若直接输出存储字符的变量,输出的是该字符在unicode中的码值。若想以字符形式输出,一般用Printf中的%c,这点和C一样。
2.字符是可以运算的,按照其unicode码值运算。
上述细节举例如下:

package mainimport "fmt"// 演示golang中字符类型使用
func main() {var c1 byte = 'a'var c2 byte = '0' //字符的0//当我们直接输出byte值,就是输出了的对应的字符的码值// 'a' ==>fmt.Println("c1=", c1)fmt.Println("c2=", c2)//如果我们希望输出对应字符,需要使用格式化输出fmt.Printf("c1=%c c2=%c\n", c1, c2)//var c3 byte = '北' //这样做是错的,因为数值会溢出var c3 int = '北' //正确做法是用更多字节的类型存储fmt.Printf("c3=%c c3对应码值=%d\n", c3, c3)//可以直接给某个变量赋一个数字,然后按格式化输出var c4 int = 22269 // 22269 -> '国'fmt.Printf("c4=%c\n", c4)//字符类型是可以进行运算的,相当于一个整数,运算时是按照码值运行var n1 = 10 + 'a' //  10 + 97 = 107fmt.Println("n1=", n1)
}

五、字符串

go的字符串的默认值是空串,它是由字节组成的,每个字节使用utf8编码。一些细节如下:
1.字符串可以像c++那样用下标访问,但无法通过下标修改。
2.双引号会识别转义字符,反引号则不识别,以字符串原生形式输出,用于防止攻击,输出源码等。
3.字符串的拼接和C++一样,但换行时,加号必须留在上一行末尾。
上述细节举例如下:

package mainimport "fmt"// 演示golang中string类型使用
func main() {//string的基本使用var address string = "北京长城 110 hello world!"fmt.Println(address)//var str = "hello"//str[0] = 'a' //错误,因为字符串无法通过下标修改//反引号以字符串的原生形式输出,包括换行和特殊字符str3 := ` package mainimport ("fmt""unsafe")//演示golang中bool类型使用func main() {var b = falsefmt.Println("b=", b)}`fmt.Println(str3)//当一个拼接的操作很长时,可以分行写,但要将+保留在上一行.str4 := "hello " + "world" +"world" + "hello " +"hello " + "world"fmt.Println(str4)var a int          // 0var b float32      // 0var c float64      // 0var isMarried bool // falsevar name string    // ""//这里的%v 表示按照变量的值输出fmt.Printf("a=%d,b=%v,c=%v,isMarried=%v name=%v", a, b, c, isMarried, name)
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

让C#程序在linux环境运行

今晚花一些时间,总结net程序如何在linux环境运行的一些技术路线。 1、采用.Net Core框架 NET Core 使用了 .NET Core Runtime,它可以在 Windows、Linux 和 macOS 等多个操作系统上运行。可以采用Visual Studio生成Linux版本的dll。 在Linux系统中&…

系统架构笔记-2-计算机系统基础知识

知识要点-2.6计算机语言 UML 对系统架构的定义是系统的组织结构,包括系统分解的组成部分以及它们的关联性、交互机制和指导原则等,提供系统设计的信息。 具体有以下 5 个系统视图: 1. 逻辑视图:也称为设计视图,表示…

【WEB】EZ_Host

1、 2、解答 http://8762a9b0-5aa3-49f8-b8d2-54e4cb0746cc.www.polarctf.com:8090/?hostlocalhost;lshttp://8762a9b0-5aa3-49f8-b8d2-54e4cb0746cc.www.polarctf.com:8090/?hostlocalhost;cat flag即可看到答案

【亿美软通-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

14.面试算法-字符串常见算法题(三)

1. 字符串回文问题 1.1 LeetCode.125. 验证回文串 回文问题在链表中是重点,在字符串中同样是个重点。当初我去美团面试第一轮技术面的第一个算法题就是让写判断字符串回文的问题。 这个本身还是比较简单的,只要先转换成字符数组,然后使用双…

OctoSQL 查询大量数据库和文件格式

OctoSQL 主要是一款 CLI 工具,可让你通过统一界面使用 SQL 查询大量数据库和文件格式,甚至在它们之间进行连接。同时,它还是一个易于扩展的完整数据流引擎,你可以用它为自己的应用程序添加 SQL 接口 OctoSQL是一款功能强大的SQL查…

Git从了解到操作

Git常用命令 基本的linux命令 ls / ll 查看当前目录( ls 是查看目录有哪些文件夹,ll 是查看隐藏文件)cat 查看文件内容touch 创建文件vi vi编辑器 (使用 vi 编辑器是为了方便展示效果,也可以记事本、editPlus、notPad等其它编辑器) 备注 Git GUl: Gi…

docker基本(仅供自己参考)

一、大型项目部署的问题: 1、大型项目的组件比较多,运行环境很复杂,部署通常会遇到各种问题: (1):依赖关系复杂,容易出现兼容性问题 (2):开发、…

雪花算法Snowflake

雪花算法常用于分布式的项目中,是为了解决大数据产生的多表分表中,保证id的唯一性。 1.分布式的特点 全局唯一性:不能出现有重复ID的标识;地增性:确保生成的ID对用于用户或业务是递增的;高可用性&#xf…

施耐德EcoStruxure Machine SCADA Expert(EMSE)与SQL数据库连接(十五)

我习惯使用SQL Server 数据库与EMSE进行连接。 用的是sql 2017 关于数据库软件的安装教程 网上一大把。 1.新建数据库 打开数据库管理工具,新建数据库 2.新建表单 (ps:这里先做一个小测试-----目的是验证与EMSE软件的链接是否顺畅。) 添加两个元素进去…

flask的学习记录

结构如下: app.py from App import create_appapp create_app()if __name__ __main__:app.run(debugTrue,host0.0.0.0,port5000) App/__init__.py from flask import Flask, render_template, request, redirect, url_for from .views import blue from .exts …

VisualPromptGFSS

COCO-20 i ^i i太大,不建议复现

golang学习笔记1-go程序执行流程

声明:本人已有C,C,Python基础,只写本人认为的重点,方便自己回顾。 命令行执行go程序有两种方式,其流程如下图 注意第一种方式会得到可执行文件,第二种不会。 例1 在当前目录下编译hello.go go build hel…

TypeScript入门 (三)数据类型

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。本文旨在全面介绍 TypeScript 中的各种数据类型,帮助读者深入理解每种数据类型的用法、内置属性…

Matlab simulink建模与仿真 第十九章(生成C代码)

一、Configuration Parameters模型参数配置 1、仿真时间 (1)在Solver选项卡中可以设置仿真的起始时间和结束时间,一般起始时间设为0,而结束时间按需设置。 (2)如果希望仿真不会自动暂停(也就…

Qwen大型语言模型系列的最新成果 ----Qwen2.5

通义千问2.5-7B-Instruct-GGUF 模型库 (modelscope.cn) apt install git-lfsgit lfs installgit clone https://www.modelscope.cn/qwen/Qwen2.5-7B-Instruct-GGUF.git

(done) 声音信号处理基础知识(3) (一个TODO: modulation 和 timbre 的关联)(强度、响度、音色)

来源:https://www.youtube.com/watch?vJkoysm1fHUw sound power 通常可以被认为是能量传输的速率 声源往所有方向传输的每时间单位能量 用 瓦特(W) 作为单位测量 Sound intensity 声音强度,每单位面积的 sound power W/m^2 人类实际上能听到非常小强…

Mybatis+Druid+MybatisPlus多数据源配置

MybatisDruidMybatisPlus多数据源配置 平常我们使用的是 properties 或者 yaml 来配置数据库的地址、用户名、密码等 但是这样只能配置一个数据源 现在我们想在一个项目里面配置多个数据源,那么我们就需要配置自己的配置类 配置类和配置文件 Mybatismysqldruid配置…

此框架你到底了解多少???

1.简述对Spring中IOC/DI的理解 IOC:控制反转,将创建和管理的对象的任务交给外部的Spring容器 DI:依赖注入,对象之间存在依赖关系,创建对象时,对其依赖的对应直接进行赋值 2.有哪些依赖注入的方式 基于注…

在线教程丨1 步生成 SOTA 级别图像,Hyper-SD 一键启动教程上线!

近年来,扩散模型在文生图任务中得到了广泛的应用,但其在实现高质量图像生成的过程中,通常需要多步推理进行去噪,这显然大大增加了计算资源成本。 针对于此,研究人员引入蒸馏算法,推出了扩撒感知蒸馏算法来…