迹忆客 计算机编程题库

题库 > Go > Go 笔试题精选 练习:44

Go 笔试题精选

从切片中删除一个元素,下面的算法实现正确的是()

  • func (s *Slice)Remove(value interface{}) error {
            for i, v := range *s {
                if isEqual(value, v) {
                    if i== len(*s) - 1 {
                        *s = (*s)[:i]
                    }else {
                        *s = append((*s)[:i],(*s)[i + 2:]...)
                    }
                    return nil
                }
            }
            return ERR_ELEM_NT_EXIST
    }
    
  • func (s *Slice)Remove(value interface{}) error {
            for i, v := range *s {
                if isEqual(value, v) {
                    *s = append((*s)[:i],(*s)[i + 1:])
                    return nil
                }
            }
            return ERR_ELEM_NT_EXIST
    }
    
  • func (s *Slice)Remove(value interface{}) error {
            for i, v := range *s {
                if isEqual(value, v) {
                    delete(*s, v)
                    return nil
                }
            }
            return ERR_ELEM_NT_EXIST
    }
    
  • func (s *Slice)Remove(value interface{}) error {
            for i, v := range *s {
                if isEqual(value, v) {
                    *s = append((*s)[:i],(*s)[i + 1:]...)
                    return nil
                }
            }
            return ERR_ELEM_NT_EXIST
    }
    
正确答案是:D
正确率:80%

解析:

Go 切片(Slice) 是对 Go Array 的抽象。尽管数组似乎足够灵活,但它们具有固定长度的限制。无法增加数组的长度。切片克服了这个限制。

提示 - 切片本身不拥有任何数据。它们只是对现有数组的引用。

更多内容参考 Go 语言切片详解

查看笔记

扫码一下
查看教程更方便