// 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.修改原本的数组, 可以使用引用传递(指针)