成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go語言中的_array、slice和map

開發 開發工具
這次還是要說說array,slice,map。雖然前面已經說過了,但是實際使用中發現對這幾個的使用和理解還是不夠詳細。

首先慶祝下golang終于通過了gfw的審核,可以不用翻墻訪問了。goer就可以光明正大地訪問http://golang.org/

這次還是要說說array,slice,map。雖然前面已經說過了,但是實際使用中發現對這幾個的使用和理解還是不夠詳細

現在再重新看看這幾個類型

array類型

array是固定長度的數組,這個和C語言中的數組是一樣的,使用前必須確定數組長度。但是和C中的數組相比,又是有一些不同的:

 

1 Go中的數組是值類型,換句話說,如果你將一個數組賦值給另外一個數組,那么,實際上就是將整個數組拷貝一份

2 如果Go中的數組作為函數的參數,那么實際傳遞的參數是一份數組的拷貝,而不是數組的指針。這個和C要區分開。因此,在Go中如果將數組作為函數的參數傳遞的話,那效率就肯定沒有傳遞指針高了。這個是不是有點陷阱的感覺?

3 array的長度也是Type的一部分,這樣就說明[10]int和[20]int是不一樣的。

array的結構用圖示表示是這樣的:

clip_image001

len表示數組的長度,后面的int儲存的是實際數據

slice類型

看看Effective Go是怎么夸贊slice的:

clip_image002

Slice是Go程序中最常用的表示序列數組的類型。為什么最經常用它呢?

1 slice是可變長的

定義完一個slice變量之后,不需要為它的容量而擔心,你隨時可以往slice里面加數據

比如:

v:=[]string{}

v=append(v, "hello")

這里附帶說一下,slice和array的寫法很容易混

v:=[2]string{"str1", "str2"} //這個是array

m:=[]string{"str1","str2"} //這個是slice

寫法上默念:array有長度slice沒長度,array有長度slice沒長度…

2 slice是一個指針而不是值。

指針比值可就小多了,因此,我們將slice作為函數參數傳遞比將array作為函數參數傳遞會更有性能。

slice是一個指針,它指向的是一個array機構,它有兩個基本函數len和cap。

看下面的圖示:

clip_image003

slice是一個帶有point(指向數組的指針),Len(數組中實際有值的個數),Cap(數組的容量)

比如上面的這個slice,它指向的數組是[3]int,其中的前兩個有值,第三個為空

那么

len(slic) = 2

cap(slic) = 3

append函數就理解為往slice中加入一個值,如果未達到容量(len<cap)那么就直接往數組中加值,如果達到容量(len = cap)那么就增加一個新的元素空間,將值放在里面

map結構

map結構也經常常用,它和php中的array()幾乎一模一樣,是一個key-value的hash結構。key可以是除了func類型,array,slice,map類型之外的類型。

它的使用也是非常簡單

m:=map[string]string{}

m["key1"] = "val1"

map結構和slice是一樣的,是一個指針。賦值的時候是將指針復制給新的變量

map的增刪改查操作是這樣

  1.  package main  
  2.    
  3. import(  
  4. "fmt" 
  5. )  
  6.    
  7. func main() {  
  8. m := map[string]string{"key1":"val1"}  
  9. fmt.Println(m)  
  10. m["key2"] = "val2" 
  11. fmt.Println(m)  
  12. p := m["key1"]  
  13. fmt.Println(p)  
  14. delete(m, "key1")  
  15. fmt.Println(m)  
  16. }  

clip_image004

原文鏈接:http://www.cnblogs.com/yjf512/archive/2012/06/14/2549929.html

 

責任編輯:彭凡 來源: 博客園
相關推薦

2022-02-09 16:02:26

Go 語言ArraySlice

2023-11-21 15:46:13

Go內存泄漏

2023-11-30 08:09:02

Go語言

2021-07-08 23:53:44

Go語言拷貝

2021-05-14 08:58:18

非線性安全Go

2023-12-30 18:35:37

Go識別應用程序

2024-04-07 11:33:02

Go逃逸分析

2021-07-15 23:18:48

Go語言并發

2023-12-21 07:09:32

Go語言任務

2023-10-09 07:14:42

panicGo語言

2024-09-03 09:45:36

2022-07-19 12:25:29

Go

2023-07-29 15:03:29

2021-06-08 07:45:44

Go語言優化

2025-03-04 00:25:55

Go開發者切片

2023-01-12 08:52:50

GoroutinesGo語言

2023-12-25 09:58:25

sync包Go編程

2024-05-10 08:36:40

Go語言對象

2024-01-08 07:02:48

數據設計模式

2021-07-13 06:44:04

Go語言數組
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一区在线 | 久久伦理中文字幕 | 综合久久综合久久 | 国产精品久久久久久久久免费樱桃 | 国产aⅴ爽av久久久久久久 | 国产无人区一区二区三区 | 91精品国产综合久久久久 | av综合站| 麻豆一区二区三区精品视频 | 国产精品久久久久久久久久久久久 | 日韩av资源站 | 成人不卡视频 | 成人午夜免费视频 | 91天堂网 | 国产一在线 | 黄色片在线观看网址 | 亚洲欧美日韩精品久久亚洲区 | 国产精品爱久久久久久久 | 免费色网址 | 国产不卡视频在线 | 婷婷激情综合 | 国产精品久久国产愉拍 | 日韩在线国产精品 | 久久机热 | 久久亚洲经典 | 日本淫视频 | 成人免费在线观看 | 国产欧美精品一区二区 | 51ⅴ精品国产91久久久久久 | 欧美日产国产成人免费图片 | 最新91在线 | 欧美日韩国产一区二区三区 | 日韩毛片| 久久婷婷国产麻豆91 | 欧美色综合一区二区三区 | 欧美国产中文字幕 | 久久宗合色 | 中文字幕一区二区三区精彩视频 | 欧美日韩中文字幕 | 久久精品亚洲精品国产欧美 | 玖玖色在线视频 |