手机网站整站源码下载dede网站图标
数据结构
字符串 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')
- 比较两个字符串
- ==
if s1 == s2 {fmt.Println("s1 == s2") }- strings.Compare, 1大于,0相等,-1小于
if strings.Compare(s1, s2) == 0 {fmt.Println("s1 == s2") }- strings.EqualFold, 忽略大小写
if strings.EqualFold(s1, s2) {fmt.Println("s1 == s2") } - 字符串拼接
- 加号
s3 := s1 + s2- strings.Join
s3 := strings.Join([]string{s1, s2}, "")- 高效拼接字符串
或者var buffer bytes.Buffer buffer.WriteString(s1) buffer.WriteString(s2) s3 := buffer.String()var builder strings.Builder buffer.WriteString(s1) buffer.WriteString(s2) s3 := buffer.String()
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") }
