Go移除slice指定索引的元素。
範例環境:
- Go 1.19
函式刪除字串slice指定index的元素。
main.go
package main
import "fmt"
func main() {
strs := []string{"a", "b", "c", "d", "e"}
re := remove(&strs, 3)
fmt.Println(re) // d
fmt.Println(strs) // [a b c e]
fmt.Println(len(strs)) // 4
}
func remove(strs *[]string, i int) string {
removedElement := (*strs)[i] // 取得刪除的元素
copy((*strs)[i:], (*strs)[i+1:]) // 把strs第i+1位置到最後的每個元素複製到strs第i位置後
(*strs)[len(*strs)-1] = "" // 把最後的元素設為zero value
*strs = (*strs)[:len(*strs)-1] // 重設strs的長度為原本長度-1
return removedElement
}
方法移除物件slice屬性的元素。
main.go
package main
import "fmt"
type Department struct {
employees []Employee
}
type Employee struct {
ID int
Name string
}
func (dep *Department) Remove(i int) Employee {
removedElement := dep.employees[i]
dep.employees = append(dep.employees[:i], dep.employees[i+1:]...)
return removedElement
}
func main() {
dep := Department{
employees: []Employee{
{1, "John"},
{2, "Mary"},
{3, "Tony"},
},
}
re := dep.Remove(1)
fmt.Println(re) // {2 Mary}
fmt.Println(len(dep.employees)) // 2
fmt.Println(dep.employees) // [{1 John} {3 Tony}]
}
沒有留言:
張貼留言