// 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.修改原本的數組, 可以使用引用傳遞(指針)
