动态数组的用法:
在Go里面的动态数组其实是切片,比如一个整型数组的基本用法如下
初始化
var arr []int
// 创建一个容量为cap,长度为len的切片arr1
arr1 :=make([]int,len,cap)
// 或者直接长度,默认容量就是长度
arr1 := make([]int, len)
插入元素(append其实就是合并后面的东西)
arr = append(arr, element)
拷贝数据。(copy其实就是把后面的东西覆盖到前面吧?)
// 拷贝arr的内容到arr1
copy(arr1, arr)
获取切片信息
// 获取长度
length = len(arr)
// 获取容量
c = cap(arr)
切数据出来
// 获取中间一段,比如拿下标1(包含1),到下标4(不包含4)
res = arr[1:4]
// 不简化地拿下标1(包含1),到结尾
res = arr[1, len(arr)]
删除切片index位元素(本质就是合并不删除的部分,需要注意首位和末尾的问题)
arr = append(arr[:index], arr[index+1:])
hashMap用法
使用语言当然不能不知道hashMap怎么操作,Go中有专门的map使用。
初始化一个 key为字符串,value为整型的map
hashMap := make(map[string]int)
// or
var hashMap map[string]int
删除map里面的key元素
delete(hashMap, key)
判断key是否被写入
value, isExists := hashMap[key]
return isExists
遍历
for key:= range hashMap {
value := hashMap[key]
}
JSON用法
Go中有专门提供JSON的原生库,用法如下:
type Person struct {
name string
age int
}
person := Person{
name: "deadfish",
age: 18,
}
res, err := json.Marshal(person)
if err != nil {
// ...
}
return string(res) // 结果强转即可
当然嵌套也是必须的。以下代码接上方
map中每个元素后面都要加逗号,比较规范。
type Group struct {
persons map[string]Person
number int
}
persons := make(map[string]Person)
persons[person.name] = person
group := Group{
persons: persons,
number: 1,
}
fmt.Println(group.persons)
字符串处理
Go的一些字符串和整型互换,切割之类的操作
字符串和整型互转:
int = strconv.Atoi(str)
str = strconv.Itoa(int)
字符串切割(byte互用)
如何把字符串切割出来处理,以及byte的互用
str = "abcdef"
byte = str[0: 2] // ab byte
newStr = string(byte) // ab string
join字符串数组
把一个数组合并成一个字符串
strArray := []string
str = strings.join(strArray, "连接的字符")
split分割字符串
把字符串分割成若干个子切片
str = "abaccad"
strArray = string.split(str, "a") // ["b", "cc", "d"]