day02 go的数据类型和运算符

news/2024/7/6 3:46:25/文章来源:https://www.cnblogs.com/dengz/p/18279075

day02 go的数据类型和运算符

前言

  • 动态语言类型
  • 自动开辟数据空间,自动识别数据类型 python
  • 静态语言类型
  • 开辟内存空间,定义数据类型 c,java,go

go 语言中的数据类型

/*- go 基本数据类型:- 布尔类型- 数值类型- 整型  :- 有符号:int,int8,int16,int32,int64.- 无符号:uint,uint8,uint16,uint32,uint64- 浮点型- float32,float64- 复数:complex- 字符串类型- 派生数据类型- 指针 *- 数组 array- 结构体 struct- 通道 channel- 切片 slice- 函数 func- 接口 interface- Map
*/
code
// 1. 布尔类型var b1 boolvar b2 boolb1 = trueb2 = falsefmt.Println(b1, b2)// f fmt.Printf 格式化输出 : %d 整数, %s 字符串,%p 内存地址, %T 数据类型,%t布尔类型数据结果 ,%f 浮点数据fmt.Printf("布尔类型数据的整数结果:b1=%T,%t\n", b1, b1)fmt.Printf("布尔类型数据的整数结果:b2=%T,%t\n", b2, b2)// 布尔默认值 : false = 0 , true = 1var b3 boolfmt.Println(b3)// 2. 整数类型,不能超过该数据类型的长度var i1 int8i1 = 10fmt.Println(i1)//i1 = 1000 // 超出 int8 的范围。 cannot use 1000 (untyped int constant) as int8 value in assignment (overflows)fmt.Println(i1)//var i2 uint8//i2 = -100 // cannot use -100 (untyped int constant) as uint8 value in assignment (overflows)//fmt.Println(i2)// 3. 浮点型,默认保留 小数点后 六位var f1 float32f1 = -19999fmt.Printf("%T,%f\n", f1, f1)fmt.Println(f1)f1 = 3.14fmt.Printf("%T,%f\n", f1, f1)fmt.Println(f1)// 保留小数点后3位. 格式化输出:%.3f,超出的位数四舍五入var f2 float32f2 = 3.1415926fmt.Printf("%.3f\n", f2) // 3.142。自动四舍五入// float32 和 float64 精度不一样. 默认使用 float64var f3 float32 = -123.0000901var f4 float64 = -123.0000901fmt.Println(f3, f4) // -123.00009 -123.0000901// 4. 特殊数字类型 无符号// byte类型. byte == uint8var byte1 byte = 255fmt.Println(byte1)fmt.Printf("%T\n", byte1) // uint8 类型// rune类型 rune == int32var rune1 rune = 1000000000fmt.Println(rune1)fmt.Printf("%T\n", rune1) // int32 类型// int 默认根据系统位数来定义var int1 int = 1000fmt.Println(int1)fmt.Printf("%T\n", int1) // int 类型// 5. 字符串类型. go中字符串由字符组成。  go 默认使用utf-8编码类型var str0 stringstr0 = "Hello Word"fmt.Printf("%T %s \n", str0, str0) // string 类型var str1 stringstr1 = "go 语言学习中" // 空格隔开中文,英文不隔开fmt.Println(str1)//  单引号:字符 字符的本质是整形数值类型数据.  双引号:string类型s1 := 'A's2 := "A"fmt.Println(s1, s2)           // 65, Afmt.Printf("%T,%T\n", s1, s2) // int32,string// 转义字符: \ 转义符号: \n 换行, \b 删除上一个字符,\t tabfmt.Println("hello\nword")fmt.Println("hello\bword")fmt.Println("hello\tword")// 反 转义字符fmt.Println("\\n")fmt.Println("\"")// 多行文本 使用 反引号 : ``s3 := `go 多行文本`fmt.Println(s3)// 6. 数值类型转换. 格式:新类型的值=新类型(旧类型的值).// int 转换为 floatvar v1 intv1 = 1v2 := float64(v1)fmt.Printf("%T,%d\n", v1, v1)fmt.Printf("%T,%.3f\n", v2, v2)// float 转换为 intc := 12d := float64(c)fmt.Printf("%T,%.3f\n", d, d)fmt.Printf("%T,%d\n", c, c)// 布尔类型 不支持转换

数值型

序号 类型和描述
1 uint8 无符号 8 位整型 (0 到 255)
2 uint16 无符号 16 位整型 (0 到 65535)
3 uint32 无符号 32 位整型 (0 到 4294967295)
4 uint64 无符号 64 位整型 (0 到 18446744073709551615)
5 int8 有符号 8 位整型 (-128 到 127) 0
6 int16 有符号 16 位整型 (-32768 到 32767)
7 int32 有符号 32 位整型 (-2147483648 到 2147483647)
8 int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

转义字符

运算符

/*运算符- 算数运算符- 取模 %- 加减乘除- ++ , -- 自增/自减- 赋值运算符- = 赋值运算符- += 加等于- -= 减等于- /= 处等于- *= 乘等于- 逻辑运算符- 与 &&, 或 || ,非 !- ! 取反运算符- 位运算符。 加密解密常用。 基于二进制数据计算- & 对比位置。相同位置位比较,两个为1就是1- | 对比位置。相同位置比较,一个为1就是1- >> 右移。- << 左移- ^ 相异或- &^ 位清空。 a &^ b。 为:0,取a上的数值。 为:1 ,取0(二进制)- 关系运算符- 大于>,小于<,等于==,不等于!=,大于等于>=,小于等于<= .- 其他运算符- & 取地址- * 指针符号*/
code
// 取模c := 7 % 2fmt.Println(c)// 取反b := truefmt.Println(!b)// 位运算// &aa := 1              //二进制001bb := 5              //二进制101fmt.Println(aa & bb) // 1// |fmt.Println(aa | bb) // 5// >> 右fmt.Println(bb >> 1) // 2. 101 右移动1位。 10 = 2fmt.Printf("%b\n", bb>>1)// << 左fmt.Println(bb << 1) // 10. 101 左移动1为。 1010 = 10fmt.Printf("%b\n", bb<<1)println()AA := 60 // 二进制:0011 1100BB := 13 // 二进制:0000 1101// &  0000 1100fmt.Println(AA & BB) // 12res1, _ := strconv.ParseInt("00001101", 2, 64)fmt.Println("二进制转十进制:", res1)// | 0011 1101fmt.Println(AA | BB) // 61res2, _ := strconv.ParseInt("00111101", 2, 64)fmt.Println("二进制转十进制:", res2)// ^ 按位异或.  位置相同为0,不同为1。 0011 0001fmt.Println(AA ^ BB) // 0011 0001res3, _ := strconv.ParseInt("00110001", 2, 64)fmt.Println("二进制转十进制:", res3)// &^ 位清空。 a &^ b。 为:0,取a上的数值; 为:1 ,取0(二进制)fmt.Println(AA &^ BB) // 0011 0000res4, _ := strconv.ParseInt("00110000", 2, 64)fmt.Println("二进制转十进制:", res4)// >> 左移 几位fmt.Println(AA << 2) // 二进制:0011 1100  ---->  1111 0000res5, _ := strconv.ParseInt("11110000", 2, 64)fmt.Println("二进制转十进制:", res5)// << 右移 几位fmt.Println(AA >> 2) // 二进制:0011 1100  ---->  0000 1111res6, _ := strconv.ParseInt("00001111", 2, 64)fmt.Println("二进制转十进制:", res6)

go 中的数据类型图

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

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

相关文章

16-视口的理解

视口的理解01 布局视口和视觉视口02 理想视口<meta name="viewport" content="width=device-width, initial-scale=1.0"> 通过width=device-width 即布局视口的宽度等于设备的宽度,以此来达到效果视口中的其它值

《痞子衡嵌入式半月刊》 第 103 期

痞子衡嵌入式半月刊: 第 103 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

EasyDesktop 浏览器书签管理从未如此简单

作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2k屏幕分辨率下一栏都放不下, 为此我只好把这些书签的名称改的短一点, 这样就能…

docker基本介绍

虚拟机的部署形式 一个物理机可以部署多个app 每个app独立运行在一个VM虚拟机里面 依然部署很慢 迁移和扩展可以使用VM的克隆 每一个虚拟机都是一个完整的操作系统,虚拟机多的时候,操作系统本身资源也就被消耗过多 企业使用的虚拟化工具为:vmware esxi虚拟化工具 个人学习使…

新生题

MISC kongfu 用winhex打开压缩包,下拉到最后发现keybase64解密后发现是栅栏密码audio 打开发现是一个wav文件,用Audacity打开根据电平,得到01100010 01100001 01101011 01100100 01101111 01110010 二进制转字符进行md5加密Smtpbase64解码foremost 用foremost分解图片分解成…

STM32串口如何输出中文

当你想在串口调试助手实现换行功能时却不行时,试一试将\n改为\r\n 因为我用的是XCOM串口调试助手,就遇到了这样的问题 而当你加入int fputc(int ch, FILE *f)函数却实现不了printf,putchar调用时 需要加入#include<stdio.h>并勾选魔术棒中的Use MicroLIBint fputc(int…

DApp设计与开发 课程笔记(四):NFT交易市场合约

笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp 设计与开发 10-13 课 笔记中提到的名词不做过多解释 不懂就搜!开发准备:编辑IDE环境:Vscode+Hardhat 调试:Remix ERC标准智能合约生成巫师:https://docs.openzeppelin.com/contracts/5.x/wizard动手学 …

杂论前端之unipaa_2024-7

创建一个带有 "register-btn" 类的按钮,具有 "getUserInfo" 的开放类型以及一个点击事件处理程序 "register()" --><button class="register-btn" open-type="getUserInfo" bindtap="register"></bu…

算法金 | Transformer,一个神奇的算法模型!!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」抱个拳,送个礼 在现代自然语言处理(NLP)领域,Transformer 模型的出现带来了革命性的变化。它极大地提升了语言模型的性能和效率,而自注意力机制是其中的核心组件。…

SPI驱动-基于ICM20608六轴MEMS传感器

1 IMX6ULL的SPI控制器简介 SPI是全双工同步串行通讯总线,是一个四线结构的总线协议,其使用比IIC简洁许多,具体关于SPI总线协议的内容可以自行查阅资料。 1.1 SPI控制器介绍 imx6ull中有四个ECSPI控制器,也即四个增强型SPI控制器,也可以当作普通的SPI控制器使用。这里又要和…

基于dspic33ck64mp105的电机控制器开发①

原理图是基于 microchip官方的 MCP1722_Power_Tools 参考设计而来,修改部分如下:https://www.microchip.com/en-us/tools-resources/reference-designs/portable-power-tool-reference-design1,修改了电源模块2,修改了栅极驱动3,增加了蓝牙通信模块4,修改了原版AUX的端口…

7、 Django-路由-router-页面跳转

概念: 在实际开发过程中、一个Django项目会包含很多的app、这时候如果我们只在主路由里进行配置就会显得杂乱无章、 所以通常在每个app中创建各自的urls.py路由模块、然后从根路由出发、将app所属的url请求、全部转发到相应的urls.py 模块 而这个从主路由转发到各个应用的路由…

10、 Django-模板-templates

模板语法 #模板中的变量语法:{{ var }}如果变量不存在、则插入空字符串#方法不能有参数{{ int }}{{ str }}{{ list }}{{ list.0 }}{{ dict }}{{ dict.a }} #dict[a]{{ func }} #传递函数{{ class_obj.func }} #传递类.方法#列表、使用索引、不允许负索引it…

Simple WPF: WPF 透明窗体和鼠标事件穿透

一个自定义WPF窗体的解决方案,借鉴了吕毅老师的WPF制作高性能的透明背景的异形窗口一文,并在此基础上增加了鼠标穿透的功能。可以使得透明窗体的鼠标事件穿透到下层,在下层窗体中响应。一个自定义WPF窗体的解决方案,借鉴了吕毅老师的WPF制作高性能的透明背景的异形窗口一文…

VMware安装Win11环境

准备 Win11的iso镜像 下载链接:https://www.microsoft.com/zh-cn/software-download/windows11/?open_in_browser=true 配置步骤 步骤一——创建虚拟机 1、点击创建新虚拟机2、使用典型模式3、选择镜像位置4、选择虚拟机存放位置5、输入密码,此密码可以随便写6、选择单个文件…

2、爬虫-安装anaconda工具

1、官网:https://www.anaconda.com/download-success2、一直下一步安装即可 3、打开4、输入:jupyter notebook 打开有一个浏览器的界面 5、右上角点击new新建python3(ipykernel)本文来自博客园,作者:little小新,转载请注明原文链接:https://www.cnblogs.com/littlecc/…

50、k8s-DashBoard(k8s的web)-部署

1、下载yaml文件:https://github.com/kubernetes/dashboard/blob/v2.0.0/aio/deploy/recommended.yaml 2、修改yaml文件的service 配置: --------------------------------------------- ---kind: Service apiVersion: v1 metadata:labels:k8s-app: kubernetes-dashboardname…

[JLU] 数据结构与算法上机题解思路分享-第二次上机

这是吉林等通知大学数据结构与算法上机题的题解思路,没有精妙的解法,只是一个记录罢前言 首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。 这里只是思路解析的博客,代码仓库在 JLU_Data_Structures_Record 希望你能在这里找到你想要…

docker 基础学习--尚硅谷教程

1、新建、启动容器docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 2、列出当前所有正在运行的容器docker ps [OPTIONS] 3、退出容器4、重启、退出、删除容器 5、启动守护式容器 docker 常见命令