Golang字符串是否存在于切片或数组中的小工具(基本等同于python in语法)

 

// golang中是没有判断字符串是否存在数组或切片里的内置方法, 所以我们可以自己搞一个快速小组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
func Find(slice []string, val string) (int, bool) {
    for i, item := range slice {
        if item == val {
            return i, true
        }
    }
    return -1, false
}
 
func main() {
  var dataList []string{"test1", "test2"}
  
  dataStr := "test1"  
  // 传入切片 和 要查找的字符串
  _, flag := Find(dataList, dataStr)
  if flag {
    fmt.Println("存在 -> ", dataStr)
  } else {
    fmt.Println("不存在 -> ", dataStr)
  }
 
}
 
  
1
2
>>>>>>>>>>>>>>>>>:预期结果
存在 -> test1<br><br>

Golang数组的取值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
- 数组是固定长度的特定类型元素组成的序列
- 一个数字由零个或多个元素组成
- 数组的长度是固定的,因此Go更常用slice(切片, 动态的增长或收缩序列)
- 数组是值类型, 用索引下标访问每一个元素, 范围是0 - len-1, 访问超出数组长度范围 会panic异常
 
 
 
// Go Array 数组中没有复制的数组 会有相应的默认值
 
// 声明数组 , 并且个数组中的元素赋值
var intArr [5]int
fmt.Println(intArr)
intArr[0] = 12
intArr[1] = 34
 
fmt.Println(intArr)
 
 
 
// 声明数组 并且直接赋值
var namestr [5]string = [5]string{"1", "2"}
fmt.Println(namestr)
 
var namestr2 = [5]string{"1"}
fmt.Println(namestr2)
 
 
// 取数组最后一个元素  顺便展示指定索引赋值
var namestr2 = [5]string{"1", 4: "124124"}
fmt.Println(namestr2, namestr2[len(namestr2)-1])
 
 
// 自适应数组大小[...]
var namestr3 = [...]string{"zj", "zjj", "zjjj"}
fmt.Println(namestr3)
 
 
// 数据结构题类型数组
 
var namestr5 = [...]struct{
  name string
  age int
}{
  {"zj", 18},
  {"ccn", 18},
}
fmt.Println(namestr5)
 
 
// 数组循环
 
for i:=0; i < len(namestr3);i++{
  fmt.Println("for " + namestr3[i])
}
 
for index, value := range namestr3{
  fmt.Println(index, value)
}
 
 
 
** 数组注意事项:
    数组是多个相同数据的组合, 且长度固定, 无法扩容 [5]int
 
数组使用步骤:
    1.声明数组
    2.给数组元素赋值
    3.使用数组
    4.数组索引从0开始 不能index of range
    5.Go数组是值类型, 变量传递默认是值传递, 因此会进行值拷贝
    6.修改原本的数组, 可以使用引用传递(指针)

  

 

posted @   听风走了八千里  阅读(3024)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示