2021.04.12
Go语言基础之基本数据类型
整型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-26WMZHZ5-1618319156920)(C:\Users\85431\AppData\Roaming\Typora\typora-user-images\image-20210412194148268.png)]
int有符号,uint无符号。
其中uint就是byte型,int16相当于c语言中的short型,int64相当于long型。
存在的意义:
因为Go语言运行build后会打包成一个二进制文件(.exe),对于操作系统来讲32位就不能运行64位的程序,反之如此。
注意事项:
获取对象的长度的内建len()
函数返回的长度可以根据不同平台的字节长度进行变化。实际使用中,切片或 map 的元素数量等都可以用int
来表示。在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int
和 uint
。
进制转换:
package main
import "fmt"
func main() {
num01 := 0b110
num02 := 0o14
num03 := 0xc
fmt.Println("2进制 %b 表示的是: %d /n",num01,num01)
fmt.Println("8进制 %o 表示的是: %d /n",num02,num02)
fmt.Println("16进制 %x 表示的是: %d /n",num03,num03)
}
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于"U+%04X"
%E 用科学计数法表示
%f 用浮点数表示
浮点数
Go语言支持两种浮点数,float32和float64.
package main
import (
"fmt"
"math"
)
func main() {
// num01 := 0b110
// num02 := 0o14
// num03 := 0xc
//
//fmt.Println("2进制 %b 表示的是: %d \n",num01,num01)
//fmt.Println("8进制 %o 表示的是: %d \n",num02,num02)
//fmt.Println("16进制 %x 表示的是: %d \n",num03,num03)
//
fmt.Printf("%f \n",math.Pi)
fmt.Printf("%.1f \n",math.Pi)
}
package main
import (
"fmt"
)
var myfloat float32 = 1000018
func main() {
fmt.Println("myfload:",myfloat)
fmt.Println("myfloat:",myfloat+1)
}
类型转换:
Go语言只有强制类型转换,只有在两个类型之间支持的情况下相互转换才行.
T(表达式)
T表示要转换的类型,表达式包括变量,复杂算子和函数返回值.
package main
import (
"fmt"
"math"
)
func main() {
//计算直角三角形的斜边长时使用math包的Sqrt()函数,该函数接收的是float64类型的参数,而变量a和b都是int类型的,这个时候就需要将a和b强制类型转换为float64类型
var a , b = 3,4
var c int
c = int(math.Sqrt(float64(a*a+b*b)))
fmt.Println(c)
}
练习
编写代码分别定义一个整型、浮点型、布尔型、字符串型变量,使用fmt.Printf()搭配%T分别打印出上述变量的值和类型
package main
import "fmt"
var (
name string
age int
sex string
isRich bool
)
func main() {
name = "a2rcher"
age = 20
sex = "man"
isRich = true
fmt.Printf("name:",name)
fmt.Println()
fmt.Printf("age",age)
fmt.Println()
fmt.Printf("sex",sex)
fmt.Println()
}
Go语言基础之运算符
- 算数运算符
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
- 关系运算符
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
- 逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
|| | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
- 位运算符
运算符 | 描述 |
---|---|
& | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) |
| | 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) |
<< | 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> | 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。 |
- 赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
|= | 按位或后赋值 |
^= | 按位异或后赋值 |