golang關於陣列的一些常用操作總結
阿新 • • 發佈:2018-12-19
陣列初始化
一維陣列
var a [4]int //元素自動初始化為零[0 0 0 0]
b := [4]int{2, 5} //未提供初始化值得元素自動初始化為0 [2 5 0 0]
c := [...]int{1, 2, 3} //編譯器按初始化值數量確定陣列長度 [1 2 3]
d := [2]string{"TigerwolfC","chen_peggy"}
e := [...]int{10, 3: 100} //支援索引初始化,但注意陣列長度與此有關 [10 0 0 100]
f := [4]string{1: "b", 3: "c"} // 可以指定初始化的位置
複合型別陣列
type User struct { Name string Age byte } d := [...]user{ {"TigerwolfC", 20},// 可省略元素型別。 {"chen_peggy", 18},// 別忘了最後一行的逗號。 }
陣列去重
方法一
func ArrayRemoveRepeated(arr []string) []string {
sort.Strings(arr)
i:= 0
var j int
for{
if i >= len(arr)-1 {
break
}
for j = i + 1; j < len(arr) && arr[i] == arr[j]; j++ {
}
arr= append(arr[:i+1], arr[j:]...)
i++
}
return arr
}
方法二
func ArrayRemoveRepeated(arr []string) (newArr []string) { newArr = make([]string, 0) for i := 0; i < len(arr); i++ { repeat := false for j := i + 1; j < len(arr); j++ { if arr[i] == arr[j] { repeat = true break } } if !repeat { newArr = append(newArr, arr[i]) } } return }
刪除陣列中某個元素
a := []int{0, 1, 2, 3, 4}
//刪除第i個元素
i := 2
a = append(a[:i], a[i+1:]...)
通過索引刪除
func remove(s []string, i int) []string {
return append(s[:i], s[i+1:]...)
}
其他方法
//刪除某個元素 func Remove(slice []interface{}, elem interface{}) []interface{}{ if len(slice) == 0 { return slice } for i, v := range slice { if v == elem { slice = append(slice[:i], slice[i+1:]...) return remove(slice,elem) break } } return slice } func RemoveZero(slice []interface{}) []interface{}{ if len(slice) == 0 { return slice } for i, v := range slice { if ifZero(v) { slice = append(slice[:i], slice[i+1:]...) return removeZero(slice) break } } return slice }
持續更新中
如有不對歡迎指正,相互學習,共同進步。