Golang字符串是否存在于切片或数组中的小工具(基本等同于python in语法)
听风走了八千里 人气:3
// golang中是没有判断字符串是否存在数组或切片里的内置方法, 所以我们可以自己搞一个快速小组件
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) } }
>>>>>>>>>>>>>>>>>:预期结果 存在 -> test1
Golang数组的取值
- 数组是固定长度的特定类型元素组成的序列 - 一个数字由零个或多个元素组成 - 数组的长度是固定的,因此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.修改原本的数组, 可以使用引用传递(指针)
加载全部内容