先看都有那些数据类型
类型 | 描述 |
---|---|
uint | 32位或64位 |
uint8 | 无符号 8 位整型 (0 到 255) |
uint16 | 无符号 16 位整型 (0 到 65535) |
uint32 | 无符号 32 位整型 (0 到 4294967295) |
uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
int | 32位或64位 |
int8 | 有符号 8 位整型 (-128 到 127) |
int16 | 有符号 16 位整型 (-32768 到 32767) |
int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
byte | uint8的别名(type byte = uint8) |
rune | int32的别名(type rune = int32),表示一个unicode码 |
uintptr | 无符号整型,用于存放一个指针是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。 |
float32 | IEEE-754 32位浮点型数 |
float64 | IEEE-754 64位浮点型数 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
一、 基本数据类型相互转换
olang和Java/C不同,Golang在不同类型的变量之间赋值时需要显式转换。也就是Golang中数据类型不能自动转换。
基本语法:
表达式var_type(var_name) 将值v转换为类型var_type
var_type:就是数据类型,比如int32, int64, float32等等
var_name:就是需要转换的变量
type MyInt int64
func TestImplicit(t *testing.T) {
var a int = 1
var b int64
var c MyInt
b = int64(a)
// b = c // 别名也不允许隐式类型转换
fmt.Print(a, b, c)
}
二、 类型的预定义值
- math.MaxInt64
- math.MaxFloat64
- math.MaxUint32
三、 记录与其它语言的区别
1. 数据类型
- 不支持任何形式的隐式类型转换
- 支持指针,但不支持指针运算
- string 默认不是空字符串""
2. 运算符
- Go语言没有前置++、--
- 用==比较数组
- 相同纬度且含有相同个数元素的数组才能进行比较
- 每个元素都相同的才相等
- 按位清零
&^
此运算符特点:
1、如果右侧是0,则左侧数保持不变
2、如果右侧是1,则左侧数一定清零
3、功能同a&(^b)相同
3. 条件和循环
- Go仅支持循环关键字 for
- if 支持变量负值
if var declaration; condition {
}
- switch 条件
- 条件表达式不限制为常量或者整数;
- 单个case中,可以出现多个结果选项,使用逗号分割;
- 与Java等语言相反,Go语言不需要用break来明确退出一个case;
- 可以不设定switch之后的条件表达式,在此情况下,整个switch结构与多个if...else...的逻辑作用相等
打赏