Go语言是一种静态类型的编程语言。
数据类型
基本数据类型
布尔型
//布尔型在go语言中关键字是 bool
// bool : true false
// bool 默认值 false
var isFlag bool = true
var isCome bool
fmt.Println(isFlag, isCome)
//打印类型 "%T"
fmt.Printf("%T,%t\n", isFlag, isFlag)
数字型
//整型
var age int = 18
fmt.Printf("%T,%t\n", age, age)
//浮点型
//默认6位小数
var money float64 = 3.14159265358979323846
fmt.Printf("%T,%f\n", money, money)
fmt.Printf("%T,%.2f\n", money, money)
fmt.Printf("%T,%.20f\n", money, money)
uint8 无符号8位整型(0到255)
uint16 无符号16位整型(0到65535)
int8 有符号8位整型(-128到127)
int64 有符号64位整型(-9223372036854775808到9223372036854775807)
byte类似uint8
rune类似int32
uintptr 无符号整型,用于存放一个指针
字符串
var str string
str = "heo"
fmt.Printf("%T,%s\n", str, str)
//字符串英文 ASCII字符码
a1 := 'A'
//中文编码表 GBK
a2 := '中'
a3 := "A"
fmt.Printf("%T,%d\n", a1, a1)
fmt.Printf("%T,%d\n", a2, a2)
fmt.Printf("%T,%s\n", a3, a3)
//字符串连接
fmt.Println("hello" + "come")
fmt.Println("人" + "come")
fmt.Println("人" + "2*8" + "go")
类型转换
Go语言类型转换必须是显式的
//类型转换
a := 3
b := 5.0
fmt.Printf("%T,%T\n", a, b) //int,float64
//将Int转换成float
c := float64(a)
fmt.Printf("%T\n", c) //float64
fmt.Println(c) //3
d := 300
fmt.Printf("%T,%d\n", d, d) //int,300
e := byte(d)
fmt.Printf("%T,%d\n", e, e) //uint8,44
运算符
算术运算符
+ | 加 | |
---|---|---|
- | 减 | |
/ | 除 | |
* | 乘 | |
% | 模(求余) | |
++ | 自增 | |
– | 自减 |
var a int = 10
var b int = 3
fmt.Println(a + b) //13
fmt.Println(a - b) //7
fmt.Println(a * b) //30
fmt.Println(a / b) //3
fmt.Println(a % b) //1
a++
fmt.Println(a) //11
a = 10
a--
fmt.Println(a) //9
关系运算符
== | 等于返回true | |
---|---|---|
!= | 不等于返回true | |
> | 大于返回true | |
< | 小于返回true | |
>= | 大于等于返回true | |
<= | 小于等于返回true |
var a int = 11
var b int = 10
fmt.Println(a == b) //false
fmt.Println(a != b) //ture
fmt.Println(a > b) //true
fmt.Println(a < b) //false
fmt.Println(a >= b) //true
fmt.Println(a <= b) //false
逻辑运算符
&& | AND,两边TRUE为TRUE | |
---|---|---|
|| | OR,两边有一个TRUE为TRUE | |
! | NOT,TRUE NOT 为FALSE |
var a bool = true
var b bool = false
//if a == true && b == true {
// fmt.Println("两边都真,结果为真")
//} else {
// fmt.Println("12")
//}
//两边都真,结果为真
fmt.Println(a && b) //false
//有一个真,结果为真
fmt.Println(a || b) //true
//真变假
fmt.Println(!a) //false
位运算符
& | 有0为0 | |
---|---|---|
| | 有1为1 | |
^ | 不同为1,相同为0 | |
&^ | 位清空,a&^b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0. | |
<< | a<<2,a都左移2位"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | |
>> | a>>2,a都右移2位">>"右边的数指定移动的位数 |
var a uint = 60
var b uint = 13
var c uint = 0
c = a & b
fmt.Printf("%d,二进制%b", c, c) //12,二进制0000 1100
fmt.Println("\n")
c = a | b
fmt.Printf("%d,二进制%b", c, c) //61,二进制0011 1101
fmt.Println("\n")
c = a ^ b
fmt.Printf("%d,二进制%b", c, c) //49,二进制0011 0001
fmt.Println("\n")
c = a << 2
fmt.Printf("%d,二进制%b", c, c) //240,二进制1111 0000
fmt.Println("\n")
c = a >> 2
fmt.Printf("%d,二进制%b", c, c) //15,二进制0000 1111
fmt.Println("\n")
赋值运算符
= | 赋值 | |
---|---|---|
+= | 相加后赋值 | A+=B : A = A+B |
-= | 相减后赋值 | |
*= | 相乘后赋值 | |
/= | 相除后赋值 | |
%= | 求余后赋值 | |
<<= | 左移后赋值 | |
>>= | 右移后赋值 | |
&= | 按位与后赋值 | |
^= | 按位异或后赋值 | |
|= | 按位或后赋值 |
var a int = 21
var b int = 10
var c int
var d int = 2
c = a
fmt.Println(c)
b += a
fmt.Println(b)
b -= a
fmt.Println(b)
b *= a
fmt.Println(b)
b /= a
fmt.Println(b)
b %= a
fmt.Println(b)
d <<= b
fmt.Println(d)
d >>= b
fmt.Println(d)