720430201810260955575811443352750.png

先看都有那些数据类型

类型描述
uint32位或64位
uint8无符号 8 位整型 (0 到 255)
uint16无符号 16 位整型 (0 到 65535)
uint32无符号 32 位整型 (0 到 4294967295)
uint64无符号 64 位整型 (0 到 18446744073709551615)
int32位或64位
int8有符号 8 位整型 (-128 到 127)
int16有符号 16 位整型 (-32768 到 32767)
int32有符号 32 位整型 (-2147483648 到 2147483647)
int64有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
byteuint8的别名(type byte = uint8)
runeint32的别名(type rune = int32),表示一个unicode码
uintptr无符号整型,用于存放一个指针是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
float32IEEE-754 32位浮点型数
float64IEEE-754 64位浮点型数
complex6432 位实数和虚数
complex12864 位实数和虚数

一、 基本数据类型相互转换

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. 数据类型

  1. 不支持任何形式的隐式类型转换
  2. 支持指针,但不支持指针运算
  3. string 默认不是空字符串""

2. 运算符

  1. Go语言没有前置++、--
  2. 用==比较数组
    1. 相同纬度且含有相同个数元素的数组才能进行比较
    2. 每个元素都相同的才相等
  3. 按位清零 &^

此运算符特点:
1、如果右侧是0,则左侧数保持不变
2、如果右侧是1,则左侧数一定清零
3、功能同a&(^b)相同

3. 条件和循环

  1. Go仅支持循环关键字 for
  2. if 支持变量负值
if var declaration; condition {

}
  1. switch 条件
    1. 条件表达式不限制为常量或者整数;
    2. 单个case中,可以出现多个结果选项,使用逗号分割;
    3. 与Java等语言相反,Go语言不需要用break来明确退出一个case;
      1. 可以不设定switch之后的条件表达式,在此情况下,整个switch结构与多个if...else...的逻辑作用相等
打赏
支付宝 微信
上一篇 下一篇