go数据类型有基础类型、符合类型、接口类型、引用类型。
基础类型:数字、字符串、布尔型
聚合类型:数组、结构体
应用:map、slience、pointer、func、func
接口类型
1、整数
rune/int32 unicode码点
byte/uint8 原始数据
uinptr 无符号整数
二元运算符
* / + - :整数浮点复数
%:取模
二元比较运算
== != < > ..... ####布尔型
一元加、减
+ -
o := 0666 #八进制数
fmt.Printf("%d %#[1]x", o) #out put 438 0666
#[1]表示复用前面出现的操作数
2、浮点数
3、复数
complex32 complex64 real()、imag()
4、布尔值
if、for里条件是boolean类型,比较操作符也能得出bool类型,一元操作符!也能得出布尔结果。
&& 优先级高于 ||
//itob 报告i是否为非零值
func itob(i int) bool {return i != 0}
5、字符串
字符串是不可变的字符序列,len()返回字符串的字节数,而非文字符号。数目小标s[i]取得第i个字符
字符串的第i个字节不一定是第i个字符,非ascii字符的utf8码点需要至少两字节。
字符串内部数据不允许修改。
字符串字面量:
#转义字符
\a bell
\b backspace
\f 换页符
\n 换行
\r enter
\t 制表符
\t 垂直制表
#源码中的字符串十六进制表示: \xhh h是十六进制数,包含两位, \ooo八进制数三位
原生字符串字面量书写形式 `...`,使用反引号。原生字面量,保存换行,处理时删除回车符,仅保留换行符。
原生的字面量适用与: HTML模板、JSON字面量、命令行提示、及需要多行输出的内容
ascii码使用7位表示128个字符(字母数字标点设备控制符)
unicode32位编码
utf-8:
utf8是unicode变长编码
16位码点值: \uhhhh
32位码点值: \Uhhhhhhhh
码点值小于256的文字付哈可以写成单个十六进制转义形式如\x41
func HasPrifix(s ,prifix string) bool { return len(s)>=len(prifix) && s[:len(prifix)] == prefix } ##判断前缀
{ return len(s)>=len(prifix) && s[len(s)-len(prifix):] == prefix } ##判断后缀
{for i := 0; i<= len(s); i++ {if s[i:] == prifix {return true}}} ##字串
range适用于字符串按照utf8隐式解码,len返回占用空间大小
\uFFD解析到不合理的字符时
字符串和字节slice:
四个包操作字符串: bytes,strings,strconv,unicode
bytes.buffer后添加utf8编码使用writerune方法,追加ascii字符,使用writebyte
常量:
iota常量生成器