教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go(golang)之slice的小想法1

go(golang)之slice的小想法1

发布时间:2022-01-15   编辑:jiaochengji.com
教程集为您提供go(golang)之slice的小想法1等资源,欢迎您收藏本站,我们将为您提供最新的go(golang)之slice的小想法1资源

slice,是go中一个很重要的主题。我们不用切片来表述,因为这里的切片特指的是数组的切片。

<h2>先给slice下个定义吧:</h2> <blockquote>

Slice expressions construct a substring or slice from a string, array, pointer to array, or slice. There are two variants: a simple form that specifies a low and high bound, and a full form that also specifies a bound on the capacity.

</blockquote>

从一个字符串中构建了一个子字符串或者从一个数组中构建一个切片,并且把这个子字符串或是这个切片的指针赋给这个slice.换句话说slice就是指向某个字符串或者某个数组的一个指针。

表面上来看,slice是一种与array很相似的东西,但是两者之间最大的区别是array是定长的而slice可以更改其长度。

<h2>slice的基本语法:</h2> <h3>1</h3> <pre><code>a[low : high] </code></pre> <ol><li>

创建一个数组

a := [5]int{1, 2, 3, 4, 5}

</li> <li>

创建切片

s := a[1:4]

</li> <li>

slice s中元素的类型是int,length(长度)是3(high-low),capacity(容量)是4

</li> </ol><h3>2 切片的省略写法</h3> <blockquote>

(原文呈现)For convenience, any of the indices may be omitted. A missing low index defaults to zero; a missing high index defaults to the length of the sliced operand。(为了方便,任何索引都是可以被忽略的,开始的索引默认为0,结束的索引默认为slice的长度)

</blockquote> <pre><code>a[2:] // same as a[2 : len(a)] a[:3] // same as a[0 : 3] a[:] // same as a[0 : len(a)] </code></pre> <h3>3</h3> <pre><code>slicer := make([]int, 10) </code></pre>

可以通过make来新建一个slice,第一个参数是slice中的元素类型,第二个参数是这个slice的容量。

<h2>slice的实现原理</h2>

当我们创建了一个slice的时候会发生以下的事情:

<ol><li>

创建了一个与参数1相匹配元素类型的、参数2长度的数组。

</li> <li>

创建指向这个数组的指针并赋给这个切片。

</li> </ol>

这里的指针其实就是指向了slice索引值start值对应的数组元素的位置的地址。

<code>func main() { a := [5]int{1, 2, 3, 4, 5} var d *[5]int = &a println(d) println(a[0:4]) println(a[1:4])}</code>

结果:

<pre><code> 0x220822bf08//原始数组地址 [4/5]0x220822bf08//对应切片a[0:4]地址 [3/4]0x220822bf10//对应切片a[1:4]地址 </code></pre> 到此这篇关于“go(golang)之slice的小想法1”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go解密:数组、切片
go(golang)之slice的小想法1
深入理解go的slice和到底什么时候该用slice
想系统学习GO语言(Golang
深度解密Go语言之Slice
Golang 基础语法-高级数据类型(3)
理解 Go 编程中的 slice
Golang slice 切片原理
Go 问答之如何阅读 Go 源码
【Go语言】【7】GO语言的切片

[关闭]
~ ~