`

golang的切片

    博客分类:
  • Go
阅读更多
package main

import (
	"fmt"
)


func main() {

	//make函数创建切片  make([]T, size, cap)

	slice := make([]int, 4, 8)
	fmt.Println(slice)
	fmt.Printf("%d----%d\n", len(slice),cap(slice))
    //切片的修改
	slice[1]=10
	slice[2]=30
	fmt.Println(slice)

	//golang中只能通过append方法来给切片扩容
	sliceA := []int{}
	fmt.Println(sliceA)
	sliceA  = append(sliceA, 12,13,14)
	fmt.Println(sliceA)

	//append方法可以合并两个切片
	sliceC:= []string{"java", "go"}
	sliceB:=[]string{"python","php"}
    //把sliceB合并到sliceC
	sliceC = append(sliceC, sliceB...) //[java go python php]
	fmt.Println(sliceC)


	//值类型:改变变量副本值的时候,不会改变原始变量的值
	//引用类型:改变变量值的时候,会改变原始变量的值
	//切片就是引用类型

	a:=[]int{1,2,3,4}
	b:=a
	b[0]=12

	fmt.Println(a) //[12 2 3 4]
	fmt.Println(b) //[12 2 3 4]


	//copy函数复制切片

	c:=[]int{1,2,3,4}
	d:=make([]int, 4, 4)
	copy(d, c)
	fmt.Println(c)   //[1 2 3 4]
	fmt.Println(d)   //[1 2 3 4]

	d[0]=12
	fmt.Println(c)   //[1 2 3 4]
	fmt.Println(d)   //[12 2 3 4]

	//golang中没有删除切片元素的方法, 利用切片本身的特性来删除元素

	s :=[]int{1,2,3,4,5,6,7}
	//删除索引为2的元素即值时3的元素,注意append元素的第二个参数的三个点
	s = append(s[:2],s[3:]...)

	fmt.Println(s)  //[1 2 4 5 6 7]


	//golong中的字符串没法修改,可以转化成字符数组,或者rune数组来修改

	p:="string"

	byteArr := []byte(p)

	byteArr[0]='a'
	fmt.Println(string(byteArr))//atring


	runeArr := []rune(p)
	runeArr[0]='l'
	fmt.Println(runeArr)  //[108 116 114 105 110 103]
	fmt.Println(string(runeArr))  //ltring



}

 

分享到:
评论

相关推荐

    golang 切片工具类

    ChangeInterfaceToSlice 将 []interface{} 类型的切片转换成指定类型的切片 ChangeSliceToInterface 将任意切片类型的切片 转换为 []interface{} 类型 Contains 方法可以检查给定的切片中是否存在某个元素 ...

    golang切片内存应用技巧详解

    主要介绍了golang切片内存应用技巧详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Golang slice切片操作之切片的追加、删除、插入等

    本文介绍了Golang slice切片操作之切片的追加、删除、插入等,分享给大家,具体如下: 一、一般操作 1,声明变量,go自动初始化为nil,长度:0,地址:0,nil func main(){ var ss []string; fmt.Printf("length:%...

    golang常用手册之切片(Slice)原理

    本篇文章主要介绍了golang常用手册之切片(Slice)原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    pools:Golang 对象和切片池

    游泳池Golang 对象和切片池

    浅谈golang slice 切片原理

    slice介绍 数组的长度在定义之后无法再次修改;...初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数

    理解Golang中的数组(array)、切片(slice)和map

    我比较喜欢先给出代码,然后得出结论 数组 代码如下: package main import (  “fmt” ) func main() {  arr := […]int{1, 2, 3}  //打印初始的指针  fmt.Printf(“the pointer is : %p \n”, &arr) ...

    实例学习Golang–结构体

    package main import fmt // 定义结构体 type StudentMangement struct { name string id string addr string hobby []string } // 构造函数 一般以new开头 // 函数返回结构体指针,可以减少内存开销 ...

    Golang中切片的用法与本质详解

    Go的切片类型为处理同类型数据序列提供一个方便而高效的方式,下面这篇文章就来给大家介绍了关于Golang中切片的用法与本质的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

    Golang2-new.docx

    个人学习golang笔记,从各种教程中总结而来,作为入门参考。目录如下 目录 1. 入门 1 1.1. Hello world 1 1.2. 命令行参数 2 2. 程序结构 3 2.1. 类型 4 2.1.1. 命名类型(named type)与未命名类型(unamed ...

    Golang 面试题汇编

    多协程查询切片问题 对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生内存拷贝吗? http包的内存泄漏 sync.Map 的用法 Golang 理论 Go语言的GPM调度器是什么? ...

    copier, 用于golang的复印机,从结构到结构的复制值.zip

    copier, 用于golang的复印机,从结构到结构的复制值 复印机我是复印机,从一个到另一个复制所有东西。特性使用相同名称将字段复制到字段从方法复制到具有相同名称的字段从字段复制到具有相同名称的方法从切片复制到...

    golang面试题集合.zip

    多协程查询切片问题 对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生内存拷贝吗? http包的内存泄漏 sync.Map 的用法 Golang 理论 Go语言的GPM调度器是什么? ...

    gocesiumtiler:一个用Golang编写的LAS文件生成的Cesium.js点云3D切片生成器

    去铯点云铺瓦工 _ _ _ __ _ ___ ___ ___ ___(_)_ _ _ __ __...__/ \___\___||___/_|\__,_|_| |_| |_|\__|_|_|\___|_| __| | A Cesium Point Cloud tile generator written in golang |___/Go Cesium点云Tiler是一个工具

    golang并发下载多个文件的方法

    今天小编就为大家分享一篇golang并发下载多个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Golang Sample.zip

    实用Golang语言写的例子,包含如下: 0随机数的使用.go 10_1设备文件的使用.go 10_2文件的读写.go 10_3拷贝文件.go 1冒泡排序.go 1冒泡排序_切片做函数参数.go 2猜数字游戏.go 3_1结构体初始化.go 3_2结构体...

Global site tag (gtag.js) - Google Analytics