4.2.4.排序和查找切片 标准库中的sort包提供了对int类型、float64类型和string类型的切片进行排序的函数,检查切片是否已排序的函数和使用二分查找法在已排序的切片中查找特定元素的函数。同时标准库也提供了通用的用于自定义数据的sort.Sort() 和sort.Search()函数。…
Go语言开发-集合类型-修改切片
4.2.3.修改切片 我们可以使用内置的append()函数来为切片追加元素。该函数接受一个被追加的切片和一个或多个要追加的元素作为参数。如果我们需要将一个切片追加到另一个切片,我们就必须要使用…(省略号)操作符来告诉Go语言将要追加的切片作为多个单独的元素。要追加的元素必须要和切片中元…
Go语言开发-集合类型-遍历切片
4.2.2. 遍历切片 一种常见的需求是遍历切片中的所有元素。如果我们想要得到切片中的元素但却不希望修改该元素,我们可以使用for … range循环;如果我们需要修改切片中的元素,我们可以使用带有循环计数器的for循环。对于前者,下面是一个例子。 [crayon-677faec9becb57288…
Go语言开发-集合类型-索引和切分切片
4.2.1.索引和切分切片 一个切片是一个隐藏数组的引用,且切片的切片也是对同一个隐藏数组的引用。下面的例子可以解释这一点。
1 2 3 4 5 6 7 8 9 | s := []string{"A", "B", "C", "D", "E", "F", "G"} t := s[2:6] fmt.Println(t, s, "=", s[:4], "+", s[4:]) s[3] = "x" t[len(t)-1] = "y" fmt.Println(t, s, "=", s[:4], "+", s[4:]) [C D E F] [A B C D E F G] = [A B C D] + [E F G] [C x E y] [A B C x E y G] = [A B C x] + [E y G] |
当我们修改数据时,不管是通过原始切片s还是通过切片s的切片t,它们的底层数据都会被修改,所以这两个切片都会受…
Go语言开发-集合类型-数组和切片
4.2.数组和切片 Go语言的数组是一个定长的具有相同类型元素的序列,可以通过使用本身就是数组的元素来创建多维数组。 数组的元素使用[]索引操作符来索引,索引从0开始,所以数组的第一个元素是array[0],最后一个元素是array[len(array)-1]。数组是可变的,所以我们可以使用arra…
Go语言开发-字符串-格式化字符串和切片
3.5.5.格式化字符串和切片 字符串可以以给定的最小宽度(如果字符串太短,就以空格填充)输出,也可以以给定的最大宽度(如果字符串太长将被截断)输出。字符串可以以Unicode编码(即字符)、码点序列(即rune)或UTF-8字节码的形式输出。 [crayon-677faec9bfbf4504319…
Go语言开发-字符串-字符串索引与切片
3.4字符串的索引和切片
正如表3.2所示,Go语言支持字符串切片语法,它是Python切片语法的一个子集。该语法可以用于任意类型的切片,我们将在第4章使用到它。由于Go语言将字符串保存为UTF-8编码的字节,所以我们必须小心只在字符边界范围内进行切片。这在我们仅使用7位ASCII编码的情况下非常简单,因为一个字节表示一个字符,但是对于非ASCII编码的文本将更具挑战性,因为这些字符可能由一个或者多个字节表示。通常我们可以简单的使用for…range循环逐字符的遍历字符串,而不是将其切片