前言

根本数据类型,变量存的就是值,也叫值类型。每一种数据都定义了明确的数据类型,在内存中调配了不同大小的内存空间。

Printf 和 Println 的区别

  • printf 输入后不换行, println输入后主动换行;
  • printf 格式化输入,println 间接输入内容
  • Printf 依据format参数生成格式化的字符串并写入规范输入。

判断数据类型以及查看变量应用内存空间

package main// import "unsafe"// import "fmt"// 引入多个import ("fmt""unsafe")func main() {    var i int8 = 12    fmt.Println("i= ", i)    var i2 uint8 = 129    fmt.Println("i2= ", i2)    var n = 12    fmt.Printf("n的类型是%T\n", n) // n的类型是int    var name = "xiao"    fmt.Printf("name的类型是%T\n", name) // name的类型是string    // 查看变量占用的字节大小和数据类型    fmt.Printf("name的类型是%T", name, unsafe.Sizeof(name))}

根本数据类型

数值型

整数类型 (默认值是0)

int, int8, int16, int32, int64
uint, uint8, uint16, uint32, uint64 无符号数(示意的范畴更大)
byte

  • bit: 计算机中的最小存储单位
  • byte: 计算机中根本存储单元
  • 1byte = 8bit (一个字节8位)

var i int8 = -129// constant -129 overflows int8var i2 uint8 = -129// constant -129 overflows uint8

浮点类型 (默认值是0)

  • float32
  • float64(默认类型)

浮点数 = 符号位 + 指数位 + 尾数位

浮点数都是有符号

应用浮点类型的时候就须要留神存在失落精度的问题

var num1 float32 = 12.556883123132   // 精度会失落var num2 float64 = 12.556883123132   // 64位比32位精度要精确fmt.Println("num1=", num1, "num2", num2) // num1= 12.556883 num2 12.556883123132var num = 12.64fmt.Printf("num的类型", num) // num的类型%!(EXTRA float64=12.64)var num3 = 5.6e2   //  5.6 * 10^2 = 5.6 * 100 = 560fmt.Println("num3=", num3)

字符型

没有专门的字符型,应用byte来保留单个字母字符

ASCII码(128个)

  • Go语言的字符应用UTF-8编码
  • 英文字母:1个字节
  • 汉字:3个字节
  • 字符必须应用单引号括起来,双引号会报错

单引号针对单个字符,字符串要应用双引号

UTF-8是对ASCII的扩容

var str1 byte = 'a'var str2 byte = '0'// 当间接输入byte时,输入的使对应字符的ASCII码值(十进制)fmt.Println("str1", str1, "str2", str2) // str1 97 str2 48fmt.Printf("str1=%c str2=%c", str1, str2) // str1=a str2=0fmt.Printf("str1=%c", str1) // str1=afmt.Printf("str2=%c", str2) // str2=0var name byte = '吖'fmt.Printf("name=%c", name) // overflows byte 超出byte类型的存储范畴了// 汉字更换成int类型var name int = '吖'fmt.Printf("name=%c", name) // name=吖var name1 int =22269fmt.Printf("name1=%c", name1) // name1=国// 数据类型只是为了定义存储空间的大小,对应计算机中的内存空间

布尔型(bool)(默认值是false)

用于逻辑运算,流程管制。bool类型只占用一个字节的内存空间

var a = falsefmt.Println(a)  // falsefmt.Println(unsafe.Sizeof(a))  // 1

字符串(string)(默认值是"")

UTF-8编码

字符串一经定义,则不能批改

var address string = "北京长城"fmt.Println(address) // 北京长城var str = "hello"str[0] = 'a'     // cannot assign to str[0] (strings are immutable)fmt.Println(str)// 反引号// 以字符串原生模式输入,包含换行和特殊字符,能够实现避免攻打、输入源代码等成果。// 字符串拼接, + 号要放在下面,否则会报错(因为go默认在一行前面加;号)var str01 = "hello" + " world"str01 += "  haha!" + "xixi" +"heihei"fmt.Println(str01)    // hello world  haha!xixiheihei

根本数据类型的默认值

var a intvar b float32var c float64var d boolvar e string// %v示意依照变量的值输入fmt.Printf("a=%d,b=%v,c=%v,d=%v e=%v", a,b,c,d,e)

下面输入: a=0,b=0,c=0,d=false e=

派生/简单数据类型

  1. 指针(Pointer)
  2. 数组
  3. 构造体(struct)
  4. 管道(Channel)
  5. 函数
  6. 切片(slice)
  7. 接口(interface)
  8. map

前面陆续解说简单数据类型。


我是 甜点cc

酷爱前端,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重,期待着一个守业机会。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。

心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。