golang 數組、切片、map


一、數組(類似python的list)

數組的長度一旦定義了就不能動態增長。並且存儲的數據類型必須相同。

創建方法:

var 數組名 [長度]數據類型

例如:

package main
import "fmt"

func main(){
    var l [5]int //定義l名字,長度為5,數據類型為int的數組
    l[0] = 1    //賦值
    l[1] = 2    
    l[2] = 3
    l[3] = 4
    fmt.Println(l)  
    fmt.Println(l[2])
    fmt.Println(l[1:3]) //輸出1到3的數組
    fmt.Println(l[0:]) //0到結尾
    fmt.Println(l[:3])  //0到3

}

##結果##
[1 2 3 4 0]
3
[2 3]
[1 2 3 4 0]
[1 2 3]

  

數組的四種初始化方式

例如:

var s1 [3]int = [3]int{1,2,3}
fmt.Println("s1",s1)
var s2 [4]int = [...]int{5,6,7,8} //[...]是固定寫法
fmt.Println("s2",s2)
var s3 = [2]int{9,10} //第一種的簡化
fmt.Println("s3",s3)
var s4 = [...]int{3:43,1:41,0:40,2:42} //類似鍵值對
fmt.Println("s4",s4)



##結果##
s1 [1 2 3]
s2 [5 6 7 8]
s3 [9 10]
s4 [40 41 42 43]

  

 數組的遍歷

例如:

var s4 = [...]int{3:43,1:41,0:40,2:42} //類似鍵值對
fmt.Println("s4",s4)
	
for index,value := range s4{
fmt.Println(index,value)
}

#結果##
0 40
1 41
2 42
3 43

  

 

二、slice切片

1、切片是數組的引用
2、切片的使用類似數組,如遍歷
3、切片的長度是可變的

創建語法
var 切片名 []類型
如:

var qiepian []int

  

切片例子:

###例子一
var suzhu [4]int = [...]int{5,6,7,8} slice := suzhu[1:4] //1到4的值,不包含4 fmt.Println(suzhu) fmt.Println(slice) fmt.Println("切片的容量",cap(slice)) ##結果 [5 6 7 8] [6 7 8] 切片的容量 3

###例子二、使用make創建切片 var slice []int = make([]int,4,10) //類型,大小(長度),容量(可選),容量必須大於長度 slice[0] = 10 slice[1] = 11 fmt.Println(slice) ##結果## [10 11 0 0] ###例子三 var slice []int = []int {2,4,6} fmt.Println(slice) ##結果## 2 4 6


切片的append追加

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
//使用append直接追加切片內容(類似python list的append)
slice = append(slice,8,10)
fmt.Println(slice)
slice = append(slice,slice...) //追加切片,...是固定寫法
fmt.Println(slice)

###結果###
[2 4 6]
[2 4 6 8 10]
[2 4 6 8 10 2 4 6 8 10]

  

切片的copy操作

使用copy內置函數

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
var slice2 []int = make([]int,5) 
fmt.Println(slice2)
copy(slice2,slice) //將slice復制給slice2
fmt.Println(slice)
fmt.Println(slice2

##結果##
[2 4 6]
[0 0 0 0 0]
[2 4 6]
[2 4 6 0 0]

  

使用切片改變字符串的內容

例子:

var str string = "hello"
fmt.Println(str)
arr := []byte(str)
arr[1] = 'a' //轉成字符串
arr1 := []rune(str) //中文轉換
arr1[0] = '狗' 
fmt.Println(arr)
str = string(arr)
fmt.Println(str)
str = string(arr1)
fmt.Println(str)

##結果##
hello
[104 97 108 108 111]
hallo
狗ello

  

 

map(類似python的dict)

map是key-value數據結構(類似python的dict)
map是無序存儲的

 

創建map語法

var map 變量名 map[keytype]valuetype

如:

var m1 map[string]string
var m2 map[string]int
var m3 map[int]string
var m4 map[string]map[string]string

  

使用例子:

 

package main
import "fmt"

func main(){
    var m1 map[string]string
    //在使用map前,需要先make,make的作用技術給map分配數據空間
    m1 = make(map[string]string)
    m2 := map[string]string{  //使用方式二
        "a1" : "q1",
        "a2" : "a2",
    }
    m1["s1"] = "亞索"
    m1["s2"] = "蓋倫" 
    fmt.Println(m1)
    fmt.Println(m1["s1"])
    fmt.Println(m2)
}

###結果###
map[s1:亞索 s2:蓋倫]
亞索
map[a1:q1 a2:a2]

  

 

map的增刪改查

增、改

map[key] = value //沒有就增加,存在就修改

delete(map,key)

map[key]   //對應的value,和python的dict一樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM