Go 復合資料型別 切片 slice

2021-08-31 21:48:15 字數 1471 閱讀 3482

##切片

package main

import (

"fmt"

"math/rand"

"time"

)func main()

arr1 := int

arr2 := make(int,6,8)

arr3 := make(int,6)

fmt.printf("長度len:%d, 容量cap:%d \n",len(arr),cap(arr)) //6 6

fmt.printf("長度len:%d, 容量cap:%d \n",len(arr1),cap(arr1)) //6 6

fmt.printf("長度len:%d, 容量cap:%d \n",len(arr2),cap(arr2)) //6 8

fmt.printf("長度len:%d, 容量cap:%d \n",len(arr3),cap(arr3)) //6 6

//切片的擷取

//下標 [low:high:max] [low,high) len=high-low cap=max-low

s := arr[:]

fmt.printf("%v len:%d cap:%d \n",s,len(s),cap(s)) //[0 1 2 3 4 5] len:6 cap:6

s = arr[1:3:6]

fmt.printf("%v len:%d cap:%d \n",s,len(s),cap(s)) //[1 2] len:2 cap:5

s = arr[:5]

fmt.printf("%v len:%d cap:%d \n",s,len(s),cap(s)) //[0 1 2 3 4] len:5 cap:6

s = arr[1:]

fmt.printf("%v len:%d cap:%d \n",s,len(s),cap(s)) //[1 2 3 4 5] len:5 cap:5

//切片是指向底層"陣列"的指標

fmt.println(arr) //[0 1 2 3 4 5]

s1 := arr[1:5:6]

s1[2] = 333

fmt.println(arr) //[0 1 2 333 4 5]

//追加

var slice int

fmt.println(slice)

//copy

src := int

dest := int

copy(dest,src)

fmt.println(dest) //[1 1 2 2 2]

//切片作為函式引數是引用傳遞

ss := int

initdata(ss)

bubblesort(ss)

fmt.println(ss)

}func initdata(s int)

}func bubblesort(s int)

} }}

Go 復合資料型別

3 map 4 結構體 5 json 文字和html模板 關於函式入參 當呼叫乙個函式的時候,函式的每個呼叫引數將會被賦值給函式內部的引數變數,所以函式引數變數接收的是乙個複製的副本,並不是原始呼叫的變數。因為函式引數傳遞的機制導致傳遞大的陣列型別將是低效的,並且對陣列引數的任何的修改都是發生在複製...

go語言資料型別之切片slice

初識 slice 切片 代表變長的序列,序列中每個元素都有相同的型別。乙個slice型別一般寫作t,其中t代表slice中元素的型別 slice的語法和陣列很像,只是沒有固定長度而已,slice在底層引用了乙個陣列物件。slice的長度對應slice中元素的數目 長度不能超過容量,容量一般是從sli...

復合資料型別

復合資料型別 作用 封裝資料 多種不同型別資料存放在一起 應存放在全域性,在訪問結構體中的變數時,應用stu.id stu.name 初始化的方式 在對陣列進行初始化時 strcpy stu.name,zhangsan 在對指標進行初始化時 char name 對name進行初始化 stu.name...