iota:总是从0开始,递增为1的整数
一、进制
二进制0b1001000 0100 1000
八进制 0o110 01 001 000=》 1 * 8^2+1 * 8^1+0 * 8^0=72
十六进制0x48 0100 1000
十进制转二进制
除以基数2,直到商为0为止,反向提取余数。
转为十六进制
除以基数16,直到商为0为止,反向提取余数。
二、数据类型
int 类型非常特殊,自动和平台匹配
64平台,int 64位 8字节
32平台, int 32位 4字节
int64和int不是一个类型,不能等同
int16 0~65535 65536种状态
计算机中只有二进制数据,为了显示字符,字符数字化产生了ASCII表 数字=》字符,占一个字节位。
unicode双字节合理分配,128个单字节兼容
utf-8 1~4字节,兼容ASCII,中文基本都落在了三字节上。
计算机中内存的数据
type byte=unit8 别名
type rune=int32
type myint int 不是别名,定义新类型
var d='2' 默认就是rune类型int32
'\x61'字符的十六进制表示
0x61 整数的16进制表示
//字符串在内存中使用utf-8,rune输出是unicode
var c rune='中' //字符用单引号
var d byte='中'//错误,超出byte范围
var d byte='\x61'
2、float
f:= 3.1415 //float64
fmt.Printf("%v\n",f) //value默认格式
fmt.Printf("%f\n",f) //f浮点数,默认小数点后6位
fmt.Printf("%3f|\n",f) //宽度为3,撑爆了
fmt.Printf("%20f|\n",f) //宽度为20,没有撑爆
fmt.Printf("%-20f|\n",f) //宽度为20,没有撑爆,左对齐
fmt.Printf("%-20.3f|\n",f) //宽度为20,没有撑爆,小数点后三位,四舍五入
//3.1415
//3.141500
//3.141500|
// 3.141500|
//3.141500 |
//3.142 |
fmt.Println(f+1000) //1000无符号的整数字面量,它有语法糖,它会被编译器走隐式类型转换
3、转义字符
每一个都是一个字符,rune类型。可以作为单独字符使用,也可以作为字符串中的一个字符
\a u+0007 alert or bell
\b u+0008 backspace
\f u+000c form feed
\n u+000A line feed or newline
\r u+000D carriage return
\t u+0009 horizontal tab
\v u+000B vertical tab
\\ u+005c backslash
\' u+0027 single quote
\" u+0022 double quote
4、打印格式
- %T打印值的类型
- %%打印百分号本身
- %b二进制;%o八进制;%O八进制带0o前缀,%x十六进制小写,%X十六进制大写
- %U把一个整数用Unicode格式打印。例如输出u+6D4B,6d4b
- %c把rune、byte的整型值用字符形式打印
- %q把一个整型当做Unicode字符输出,类似%c,不过外面多了单引号
- %e、%E科学计数法
- %f、%F小数表示法,最常用
- %g内部选择使用%e还是%f以简洁输出
- %s 字符串输出,如果是rune切片,需要做强转
- %q类似%s,外部加上双引号
5、输出函数
输出到标准输出
- Print:使用缺省格式输出,空格分隔
- Println:使用缺省格式输出,空格分隔,最后回车换行
- Printf:按照指定的格式符输出
输出到字符串,经常用来拼接字符串用
- Sprint:相当于Print,不过输出为string
- Sprintln:相当于Println,不过输出为string
- Sprintf:相当于Printf,不过输出为string