golang学习笔记大杂烩
字符编码
字符统一用utf-8编码,本质是一个整数,可以运算。码值在ASCII码表中可以用byte保存,码值大于255可以用int保存
// 21346
// b
var char int='卢'
fmt.Print(char)
var char byte='a'+1
fmt.Printf("%c",char)
反引号
字符串双引号会识别转义字符,反引号(不是单引号)以字符串原生形式输出,可以实现防止攻击,打印源代码
// 反引号\n不是单引号\n输出文本
str:= `反引号\n不是单引号\n输出文本`
fmt.Println(str)
(反)序列化
json.marsharl转为[]byte,结构体内部字段命名需要大写,用’json=xxx’转为小写
// 反序列化需要传指针(&stu1),否则无效
var stu Student=Student{
Id:1,
}
marshal, err := json.Marshal(&stu)
if err!=nil{
log.Fatal("hehehe")
}
fmt.Printf("%s\n",marshal)
var stu1 Student
err1 := json.Unmarshal(marshal, &stu1)
if err!=nil{
fmt.Println(err1)
}
fmt.Println(stu1)
copy
以较小长度slice进行复制
// [4 8 3]
var ints = []int{1,2,4,8}
var slice=ints[2:]
var slice1 =[]int{1,2,3}
fmt.Println(copy(slice1,slice))
fmt.Println(slice1)
list
list没有具体元素类型限制
/* front
back
123
front
bback
back
123
bback
back*/
l := list.New()
l.PushBack("back")
front := l.PushFront("front")
for i:=l.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}
l.InsertAfter("bback",front)
l.InsertBefore(123,front)
for i:=l.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}
l.Remove(front)
for i:=l.Front();i!=nil;i=i.Next(){
fmt.Println(i.Value)
}