共计 2509 个字符,预计需要花费 7 分钟才能阅读完成。
前言
根本数据类型,变量存的就是值,也叫值类型。每一种数据都定义了明确的数据类型,在内存中调配了不同大小的内存空间。
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 int8
var 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.556883123132
var num = 12.64
fmt.Printf("num 的类型", num) // num 的类型 %!(EXTRA float64=12.64)
var num3 = 5.6e2 // 5.6 * 10^2 = 5.6 * 100 = 560
fmt.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 48
fmt.Printf("str1=%c str2=%c", str1, str2) // str1=a str2=0
fmt.Printf("str1=%c", str1) // str1=a
fmt.Printf("str2=%c", str2) // str2=0
var name byte = '吖'
fmt.Printf("name=%c", name) // overflows byte 超出 byte 类型的存储范畴了
// 汉字更换成 int 类型
var name int = '吖'
fmt.Printf("name=%c", name) // name= 吖
var name1 int =22269
fmt.Printf("name1=%c", name1) // name1= 国
// 数据类型只是为了定义存储空间的大小,对应计算机中的内存空间
布尔型(bool)(默认值是 false)
用于逻辑运算,流程管制。bool
类型只占用一个字节的内存空间
var a = false
fmt.Println(a) // false
fmt.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 int
var b float32
var c float64
var d bool
var 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=
派生 / 简单数据类型
- 指针(Pointer)
- 数组
- 构造体(struct)
- 管道(Channel)
- 函数
- 切片(slice)
- 接口(interface)
- map
前面陆续解说简单数据类型。
我是 甜点 cc
酷爱前端,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重,期待着一个守业机会。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。
心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。
正文完