Go语言基础入门第三章

news/2025/2/11 19:51:28/

常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

const identifier [type] = value

可以省略类型说明符[type],因为编译器可以根据变量的值来推断其类型。

显式类型定义:const b string = “abc”

隐式类型定义:const b = “abc”

多个相同类型的声明可以简写为:

const c_name1, c_name2 = value1, value2

代码如下:

package mainfunc main() {//常量var URL string = "www.baidu.com"var URL2 = "www.cs.com"var a, b, c = 3.14, "cs", 5println(URL, URL2, a, b, c)
}

请添加图片描述

特殊常量iota

iota,特殊常量,可以任务是一个可以被编译器修改的常量。iota是go语言的常量计数器

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(每次增加1)。iota可以理解为const语句块中的索引。

iota可以被用作枚举值:

const(a = iotab = iotac = iota
)

第一个iota等于0,每当iota在新的一行被使用时,它的值都会自动增加1;所以a=0, b=1,c= 2可以简写为如下形式:

const(a = iotabc
)

例子:

请添加图片描述

布尔类型

布尔型的值只可以是常量true或者false。一个简单的例子:var b bool = true

package mainimport "fmt"func main() {var a boolvar b boola = trueb = falsefmt.Printf("%T, %t\n", a, b)fmt.Printf("%T, %t\n", b, b)fmt.Printf("%T, %t\n", a, a)
}

请添加图片描述

数字型

整型int和浮点型float32、float64,Go语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

Go也有基于架构的类型,例如:uint无符号、int有符号
序号类型和描述
1uint8 无符号8位整型(0到255)
2uint16 无符号16位整型(0到65535)
3uint32 无符号32位整型(0到4294967295)
4uint64 无符号64位整型(0到18446744073709551615)
5int8 有符号8位整型(-128到127)
6int16 有符号16位整型(-32768到32767)
7int32 有符号32位整型(-2147483648到2147483647)
8int64 有符号64位整型(-9223372036854775808到9223372036854775807)

字符串

package mainimport "fmt"func main() {var str stringstr = "www"fmt.Printf("%T, %s\n", str, str)//单引号 字符, 整型-ASCII字符码v1 := 'A'v2 := "A"//所有的中国汉字的编码表:GBK//全世界的字符编码表:Unicode编码表fmt.Printf("%T, %d\n", v1, v1)fmt.Printf("%T, %s\n", v2, v2)//字符串连接 +println("hello" + "wk")//转义字符 \println("hello\\'world")
}

数据类型转换

在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明:

valueOfTypeB = typeB(ValueOfTypeA)

类型B的值 = 类型B(类型A的值)

package mainimport ("fmt""strconv"
)func main() {a := 5.0b := int(a)c := strconv.FormatFloat(a, 'f', 1, 64)fmt.Printf("%T, %f\n", a, a)fmt.Printf("%T, %d\n", b, b)fmt.Printf("%T, %s\n", c, c)
}

请添加图片描述

类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将int16 转换为 int32)。当一个取值范围较大的类型转换到取值范围较小的类型时将 int32 转换为 int16 或将 float32 转换为 int),会发生度丢失(截断)的情况。

运算符


  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

算术运算符

下表列出了所有Go语言的算术运算符。假定A值为10,B值为20。

运算符描述实例
+相加A+B 输出结果为 30
-相减A-B 输出结果为 -10
*相乘A*B 输出结果为 200
/相除B/A 输出结果为 2
%求余B%A 输出结果为 0
++自增A++ 输出结果为 11
自减A-- 输出结果为 9

关系运算符

下表列出了所有Go语言的算术运算符。假定A值为10,B值为20。

运算符描述实例
==检查两个值是否相等,如果相等返回true,否则返回false(A == B) 结果为false
!=检查两个值是否不相等,如果不相等返回true,否则返回false(A != B) 结果为true
>检查左边的值是否大于右边的值,如果大于返回true,否则返回false(A > B) 结果为false
<检查左边的值是否小于右边的值,如果小于返回true,否则返回false(A < B) 结果为true
>=检查左边的值是否大于等于右边的值,如果大于等于返回true,否则返回false(A >= B) 结果为false
<=检查左边的值是否小于等于右边的值,如果小于等于返回true,否则返回false(A <= B) 结果为true

逻辑运算符

下表列出了所有Go语言的逻辑运算符。假定A值为 True,B 值为 False。

运算符描述实例
&&逻辑AND运算。如果两边的条件都为true则返回true,否则返回false(A && B) 结果为false
||逻辑OR运算符。如果两边的条件有一个为true则返回true,否则返回false(A|| B) 结果为 true
逻辑NOT运算符。对条件取反,条件为true则返回false,否则返回true。(!A) 结果为false

位运算符

Go语言支持的位运算符如下表所不。假定A为60,B为13:

运算符描述实例
&按位与运算符"&”是双目运算符。都是1结果为1,否则是0(A & B)结果为12,二进制为 0000 1100
|按位或运算符”"是双目运算符。都是0结果为0,否是是1(A | B) 结果为61,二进制为0011 1101
^按位异或运算符”^"是双目运算符。不同则为1,相同为0(A ^ B)结果为49,二进制为0011 0001
&^位清空,a &^b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0.(A &^ B)结果为 48,二进制为 0011 0000
<<左移运算符<<”是双目运算符。左移n位就是乘以2的n次方。其功能把”<<”左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。(A << 2)结果为240进制为 1111 0000
>>右移运算符”>>”是双目运算符。右移n位就是除以2的n次方。其功能是把”>>”左边的运算数的各二进位全部右移若干位,">>”右边的数指定移动的位数。(A >> 2)结果为 15,二进制为0000 1111

赋值运算符

下表列出了所有Go语言的赋值运算符:

运算符描述实例
=将符号右边的值赋给左边的对象
+=相加之后赋值C += A 等价于 C = C + A (以下类推)
-=相减之后赋值
*=相乘之后赋值
/=相除之后赋值
%=求余之后赋值
<<=左移之后赋值
>>=右移之后赋值
&=按位与之后赋值
^=按位异或之后赋值
|=按位或之后赋值

键盘输入输出

package mainimport "fmt"func main() {var x intvar y float64//定义了两个变量,用键盘录入这两个变量的值fmt.Println("请输入两个数,第一个整数,第二个浮点数:")//变量取地址 &变量fmt.Scanln(&x, &y)fmt.Println("x:", x)fmt.Println("y:", y)
}

请添加图片描述


http://www.ppmy.cn/news/20560.html

相关文章

Java开发实现图书管理系统(超详细)

本文用Java代码实现图书代码管理系统&#xff0c;有些地方可能会有纰漏&#xff0c;希望各位大佬鉴赏&#xff01;&#xff01; 文章目录 文章目录 一、Java实现图书管理系统 1.1创建book包 二、创建图书管理系统的操作包 2.1创建Operation接口 三、创建User包 3.1创建User类 四…

make <board_name>_defconfigmake menuconfig

1.make <board_name>_defconfig (1)在uboot的顶层目录的Makefile中查找目标&#xff08;defconfig无法查到&#xff09;&#xff0c;检索config&#xff0c;找到目标config和目标%config 因为我们的目标为<board_name>_defconfig&#xff0c;所以需要看的是有通配…

动态内存开辟必看,一篇就能学会贯通

目录 为什么存在动态内存分配 动态内存函数的介绍 1.malloc函数和free函数 2.calloc函数 3.realloc函数 常见的动态内存错误 经典的笔试题 柔性数组 今天来介绍一下动态内存&#xff0c;让我们直入主题&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 为…

【Leetcode每日一题】844. 比较含退格的字符串|重构字符串/双指针

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: LeetCode每日一题–进击大厂 前言&#xff1a; 昨天的【Leetcode每日一题】27. 原地移除元素|神级理解双指针一文中&#xff0c;生动形象的为大家讲解如何理解双指针&#xff0c;受到…

闭区间连续函数的性质+习题课(函数与极限总复习)——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天我们的内容依然是关于连续函数的概念和性质及相关内容&#xff0c;之前的博客我们学习到了函数的连续性和函数的间断点&#xff0c;那今天&#xff0c;我们便来看看闭区间上连续函数的性质&#xff0c;好的&#xff0c;接下来就让我们进…

注意力提示

人类的注意力是有限的、有价值和稀缺的资源。 受试者使用非自主性和自主性提示有选择性地引导注意力。前者基于突出性&#xff0c;后者则依赖于意识。 注意力机制与全连接层或者汇聚层的区别源于增加的自主提示。 由于包含了自主性提示&#xff0c;注意力机制与全连接的层或…

Python语法入门笔记(二)

一、六种最基础的数据类型 1.type type(变量):可以返回变量的数据类型 a=10 print(type(a))#打印a的数据类型 2.数字类型 2.1.int类型(py中不用定义类型,可以直接用) a=10 2.2.py浮点型只有float a=1.00 print(a) print(type(a)) 2.3.complex复数类型 类似于高中学过的复数 注…

HTTP协议学习

一、http请求协议1、常见请求头accept:浏览器通过这个头告诉服务器&#xff0c;它所支持的数据类型Accept-Charset: 浏览器通过这个头告诉服务器&#xff0c;它支持哪种字符集Accept-Encoding&#xff1a;浏览器通过这个头告诉服务器&#xff0c;支持的压缩格式Accept-Language…