读书笔记之《Go程序设计语言》---第三章 基本数据

基本数据

  • 基础类型:数值类型、字符串、布尔
  • 集合类型:数组、结构体
  • 引用类型:指针、slice、map、函数、通道
  • 接口类型:第七章讨论

整数
go数值类型包含了几种不同大小的整数、浮点数和复数
声明:var name int
知识点:

  • 有符号整数:int8、int16、int32、int64
  • 无符号整数:uint8、uint16、uint32、uint64
  • int和uint默认为32位或64位
  • rune类型是int32类型的同义词
  • byte类型是uint8的同义词
  • 无符号整数uintptr,大小不明确,但足以完整存放指针
  • Go的二元操作符:
    在这里插入图片描述
    在这里插入图片描述
  • 取模余数的正负号总是与被除数一致
  • 不同类型的整形不能进行二元操作符运算
  • 浮点转换成整形会舍去小数部分

浮点数
Go具有两种大小的浮点数float32和float64
声明 var name float32
知识点:

  • 特殊值:正无穷大和负无穷大,以及NaN(表示无意义的结果)
  • NaN的比较总不成立(除了 !=),例如nan == nan || nan > nan || nan < nan返回false

复数
Go具备两种大小的复数complex64和complex128,分别由float32和float64构成
声明 var x complex128 = complex(1, 2)
知识点:

  • complex函数根据给定的实部和虚部创建复数
  • real函数和image函数分别提取复数的实部和虚部
  • 浮点数或十进制整数后面紧跟字母i,如2i,它就变成了一个虚数
  • 两个复数实部和虚部都想等,则他们相等

布尔值
bool型的值或布尔值只有两种可能:true和false

字符串
字符串是不可变的字节序列
声明 var s string
知识点:

  • 内置的len函数返回字符串的字节数,下标访问操作s[i]取的则是第i个字符
  • s[ i : j ]产生一个新字符串,内容取值原字符串,从i到j,大小是j-i个字节
  • 操作数i和j的默认值分别是0和len(s)
  • 加号连接两个字符串生成一个新字符串
  • 字符串值无法改变,字符串本身包含的字节序列永不可变,例如:s[0] = ‘l’ 会报错
  • 字符串的值可以直接写成字符串字面量,例如:“hello ”
  • 转义字符:
    在这里插入图片描述
  • 源码中的字符串也可以包含十六进制或八进制任意字节,十六进制写成\xhh,八进制写成\ooo
  • 原生的字符串字面量书写形式是`…`,使用反引号,原生字符字面量内,转义序列不起作用
  • 重要的字符串操作的4个标准包:bytes、strings、strconv和unicode
  • 字符串和字节slice相互转换,s := “abc” b:= []byte(s) s2 := string(b)
  • 字符串与数字相互转换,x := 123 y:= fmt.Sprintf("%d", x) fmt.Println(y,strconv.Itoa(x))

常量
常量是一种表达式,其可以保证在编译阶段就计算出表达式的值,并不需要等到运行时
声明: const pi = 3.14159
知识点:

  • 所有常量本质上都属于基本类型:布尔型、字符串或数字
  • 常量的类型转换结果和某些内置函数的返回值,同样是常量
  • 常量生成器iota
    在这里插入图片描述
    在这里插入图片描述
  • 6种无类型常量:无类型布尔、无类型整数、无类型文字符号、无类型浮点数、无类型复数、无类型字符串

猜你喜欢

转载自blog.csdn.net/qq_25744595/article/details/85239760