前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang slice 增删改查

Golang slice 增删改查

作者头像
恋喵大鲤鱼
发布2019-05-17 11:20:26
1.5K0
发布2019-05-17 11:20:26
举报
文章被收录于专栏:C/C++基础

1.slice简介

slice名为切片,是Go中的可变长数组,是对底层数组的封装和引用。切片指向一个底层数组,并且包含长度和容量信息。未初始化切片的值为 nil。作用于切片的内建函数主要有四个,分别是make、len、cap与append。make用于创建切片,len获取切片的长度,cap获取切片的容量,append向切片追加元素。

代码语言:javascript
复制
package main

import "fmt"

func main() {
	//创建切片,make([]T, length, capacity)
    fib := make([]int, 0, 10)
    fmt.Println("len(fib)=", len(fib))
    fmt.Println("cap(fib)=", cap(fib))
    fib = append(fib, []int{1, 1, 2, 3, 5, 8, 13}...)
    fmt.Println("fib=",fib)
}

输出结果:

代码语言:javascript
复制
len(fib)= 0
cap(fib)= 10
fib= [1 1 2 3 5 8 13]

2.增加元素

代码语言:javascript
复制
//@brief:slice:任意类型的切片指针;index:需要插入的下标;value:待插入元素值
func insert(slice *[]interface{}, index int, value interface{}) {
    if index > len(*slice) {
       return  
    }
	//尾部追加元素,使用append函数
    if index == len(*slice) {
        *slice = append(*slice, value)
        return  
    }
    *slice = append((*slice)[:index+1], (*slice)[index:]...)
    (*slice)[index] = value 
}

func main() {
    fib := make([]interface{}, 0, 10)
    //切片头部插入元素
	insert(&fib, 0, 1)
    fmt.Println("fib =",fib)        
}

输出结果:

代码语言:javascript
复制
fib = [1]

3.删除元素

代码语言:javascript
复制
func delete(slice *[]interface{}, index int) {
    if index > len(*slice) - 1 {
       return  
    }
    *slice = append((*slice)[:index], (*slice)[index+1:]...)
}

func main() {
    fib := []interface{}{1, 1, 2, 3, 5, 8}
    //删除切片最后一个元素
	delete(&fib, len(fib) - 1)
    fmt.Println("fib =",fib)        
}

输出结果:

代码语言:javascript
复制
fib = [1 1 2 3 5]

4.修改元素

代码语言:javascript
复制
func update(slice *[]interface{}, index int, value interface{}) {
	if index > len(*slice) - 1 {
       return  
    }
	(*slice)[index] = value
}

5.查找元素下标

代码语言:javascript
复制
func search(slice []interface{}, value interface{}) []int {
	var index []int
	for i, v := range slice {
		if v == value {
			index = append(index, i)		
		}
	}
	return index
}

func main() {
    fib := []interface{}{1, 1, 2, 3, 5, 8}
	indexSlice := search(fib, 1)
	fmt.Println("indexSlice =", indexSlice)
}

输出结果:

代码语言:javascript
复制
indexSlice = [0 1]

参考文献

[1]Go编程语言规范 [2]【Golang】slice删除元素的性能对比

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年05月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.slice简介
  • 2.增加元素
  • 3.删除元素
  • 4.修改元素
  • 5.查找元素下标
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档