在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
数组概念1、数组:是同一种数据类型的固定长度的序列。 2、数组定义:var a [len]int,比如:var a[5]int,一旦定义,长度不能变 3、长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型 4、数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1 5、访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic 6、数组是值类型,因此改变副本的值,不会改变本身的值 7、数组内的内存地址是连续的
数组初始化 var age0 [5]int = [5]int{1,2,3} var age1 = [5]int{1,2,3,4,5} var age2 = […]int{1,2,3,4,5,6} var str = [5]string{3:”hello world”, 4:”tom”}
数据遍历常用两种方法:
for i := 0; i < len(a); i++ { }
for index, val := range a { }
案例一:定义一个a数组,传入函数test的数组是副本,不会改变原a数组的内容。 package main import "fmt" func test(arr [5]int) { arr[0] = 1000 } func main() { var a [5]int test(a) fmt.Println(a) }
案例二:定义一个a数组,传入函数test的是a数组的指针,会改变原a数组的内容 package main import "fmt" func test3(arr *[5]int) { (*arr)[0] = 1000 } func main() { var a [5]int test3(&a) fmt.Println(a) }
多维数组 package main import "fmt" func testArray() { var a [2][5]int = [...][5]int{{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}} for row, v := range a { for col, v1 := range v { fmt.Printf("(%d,%d)=%d ", row, col, v1) } fmt.Println() } } func main() { testArray() }
切片概念1、切片:切片是数组的一个引用,因此切片是引用类型 2、切片的长度可以改变,因此,切片是一个可变的数组 3、切片遍历方式和数组一样,可以用len()求长度 4、cap可以求出slice最大的容量,0 <= len(slice) <= (array),其中array是slice引用的数组 5、切片的定义:var 变量名 []类型,比如 var str []string var arr []int 切片初始化:var slice []int = arr[start:end],包含start到end之间的元素,但不包含end var slice []int = arr[0:end]可以简写为 var slice []int=arr[:end] var slice []int = arr[start:len(arr)] 可以简写为 var slice[]int = arr[start:] var slice []int = arr[0, len(arr)] 可以简写为 var slice[]int = arr[:] 如果要切片最后一个元素去掉,可以这么写: slice = slice[:len(slice)-1]
var nilSlice []int //nil切片 slice:=[]int{} //空切片 它们的长度和容量都是0,但是它们指向底层数组的指针不一样,nil切片意味着指向底层数组的指针为nil,而空切片对应的指针是个地址。
var slice []type = make([]type, len) slice := make([]type, len) slice := make([]type, len, cap) func testSliceCap() { a := make([]int, 5, 10) a[4] = 100 b := a[2:3] fmt.Printf("a=%#v, len(a) = %d, cap(a)=%d\n", a, len(a), cap(a)) fmt.Printf("b=%#v, len(b) = %d, cap(b)=%d\n", b, len(b), cap(b)) }
func testAppend() { var a []int a = make([]int, 5) var b []int = []int{10, 11, 12, 14} a = append(a, b...) fmt.Printf("a:%#v\n", a) }
for index, val := range slice { }
func testCopy() { var a []int = []int{1, 2, 3, 4, 5, 6} b := make([]int, 10) copy(b, a) fmt.Println(b) }
字符串转成字符切片,改完后再转成字符串 func testStrSlice() { var str = "hello world" var b []byte = []byte(str) b[0] = 'a' str1 := string(b) fmt.Printf("str1:%s, %d\n", str1, len(str)) }
排序和查找操作排序操作主要都在 sort包中,导入就可以使用
func testIntSort() { var a = [...]int{1, 8, 38, 2, 348, 484} sort.Ints(a[:]) fmt.Println(a) }
func testIntSearch() { var a = [...]int{1, 8, 38, 2, 348, 484} sort.Ints(a[:]) index := sort.SearchInts(a[:], 348) fmt.Println(index) }
|
请发表评论