前言
- 动态语言类型
- 自动开辟数据空间,自动识别数据类型 python
- 静态语言类型
- 开辟内存空间,定义数据类型 c,java,go
go 语言中的数据类型
code
var b1 bool
var b2 bool
b1 = true
b2 = false
fmt.Println(b1, b2)
fmt.Printf("布尔类型数据的整数结果:b1=%T,%t\n", b1, b1)
fmt.Printf("布尔类型数据的整数结果:b2=%T,%t\n", b2, b2)
var b3 bool
fmt.Println(b3)
var i1 int8
i1 = 10
fmt.Println(i1)
fmt.Println(i1)
var f1 float32
f1 = -19999
fmt.Printf("%T,%f\n", f1, f1)
fmt.Println(f1)
f1 = 3.14
fmt.Printf("%T,%f\n", f1, f1)
fmt.Println(f1)
var f2 float32
f2 = 3.1415926
fmt.Printf("%.3f\n", f2)
var f3 float32 = -123.0000901
var f4 float64 = -123.0000901
fmt.Println(f3, f4)
var byte1 byte = 255
fmt.Println(byte1)
fmt.Printf("%T\n", byte1)
var rune1 rune = 1000000000
fmt.Println(rune1)
fmt.Printf("%T\n", rune1)
var int1 int = 1000
fmt.Println(int1)
fmt.Printf("%T\n", int1)
var str0 string
str0 = "Hello Word"
fmt.Printf("%T %s \n", str0, str0)
var str1 string
str1 = "go 语言学习中"
fmt.Println(str1)
s1 := 'A'
s2 := "A"
fmt.Println(s1, s2)
fmt.Printf("%T,%T\n", s1, s2)
fmt.Println("hello\nword")
fmt.Println("hello\bword")
fmt.Println("hello\tword")
fmt.Println("\\n")
fmt.Println("\"")
s3 := `go 多行文本`
fmt.Println(s3)
var v1 int
v1 = 1
v2 := float64(v1)
fmt.Printf("%T,%d\n", v1, v1)
fmt.Printf("%T,%.3f\n", v2, v2)
c := 12
d := 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) |
转义字符

运算符
code
c := 7 % 2
fmt.Println(c)
b := true
fmt.Println(!b)
aa := 1
bb := 5
fmt.Println(aa & bb)
fmt.Println(aa | bb)
fmt.Println(bb >> 1)
fmt.Printf("%b\n", bb>>1)
fmt.Println(bb << 1)
fmt.Printf("%b\n", bb<<1)
println()
AA := 60
BB := 13
fmt.Println(AA & BB)
res1, _ := strconv.ParseInt("00001101", 2, 64)
fmt.Println("二进制转十进制:", res1)
fmt.Println(AA | BB)
res2, _ := strconv.ParseInt("00111101", 2, 64)
fmt.Println("二进制转十进制:", res2)
fmt.Println(AA ^ BB)
res3, _ := strconv.ParseInt("00110001", 2, 64)
fmt.Println("二进制转十进制:", res3)
fmt.Println(AA &^ BB)
res4, _ := strconv.ParseInt("00110000", 2, 64)
fmt.Println("二进制转十进制:", res4)
fmt.Println(AA << 2)
res5, _ := strconv.ParseInt("11110000", 2, 64)
fmt.Println("二进制转十进制:", res5)
fmt.Println(AA >> 2)
res6, _ := strconv.ParseInt("00001111", 2, 64)
fmt.Println("二进制转十进制:", res6)
位运算符 图解
运算符 |
描述 |
实例 |
& |
按位与运算符"&"是双目运算符。都是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 + B 将 A + B 表达式结果赋值给 C |
+= |
相加后再赋值 |
C += A 等于 C = C + A |
-= |
相减后再赋值 |
C -= A 等于 C = C - A |
*= |
相乘后再赋值 |
C *= A 等于 C = C * A |
/= |
相除后再赋值 |
C /= A 等于 C = C / A |
%= |
求余后再赋值 |
C %= A 等于 C = C % A |
<<= |
左移后赋值 |
C <<= 2 等于 C = C << 2 |
>>= |
右移后赋值 |
C >>= 2 等于 C = C >> 2 |
&= |
按位与后赋值 |
C &= 2 等于 C = C & 2 |
^= |
按位异或后赋值 |
C ^= 2 等于 C = C ^ 2 |
|= |
按位或后赋值 |
C |= 2 等于 C = C | 2 |
其他运算符
运算符 |
描述 |
实例 |
& |
返回变量存储地址 |
&a; 将给出变量的实际地址。 |
* |
指针变量。 |
*a; 是一个指针变量 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-07-02 Python进阶(十二)----re模块