数据结构
字符串 string
-
访问字符串中的值
- 通过下标访问
s1 := "hello world" first := s[0]- 通过切片访问
s2 := []byte(s1) first := s2[0]- 通过for-range循环访问
for i, v := range s1 { fmt.Println(i, v) } -
查询字符是否属于特定字符集
// 判断字符串中是否包含a、b、c中的任意一个字符
strings.ContainsAny(s1, "abc")
// 判断字符串中是否包含abc子串
strings.Contains(s1, "abc")
// 判断字符串中是否包含a字符
strings.ContainsRune(s1, 'a')
slice模拟stack
- 创建栈
stack := make([]int, 0) - 入栈
stack = append(stack, 1) - 出栈
if len(stack) > 0 { stack = stack[:len(stack)-1] } - 判断栈是否为空
if len(stack) == 0 { fmt.Println("stack is empty") }
slice模拟Queue
- 创建队列
queue := make([]int, 0) - 入队
queue = append(queue, 1) - 出队
if len(queue) > 0 { queue = queue[1:] } - 判断队列是否为空
if len(queue) == 0 { fmt.Println("queue is empty") }
slice模拟Set
- 创建集合
set := make(map[byte]struct{}) - 添加元素
set['a'] = struct{}{} - 删除元素
delete(set, 'a') - 判断元素是否存在
if _, ok := set['a']; ok { fmt.Println("a is in set") }