日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Go語言中的_array、slice和map

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

創(chuàng)新互聯是一家集網站建設,二七企業(yè)網站建設,二七品牌網站建設,網站定制,二七網站建設報價,網絡營銷,網絡優(yōu)化,二七網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

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

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

array類型

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

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

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

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

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

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

slice類型

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

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。

看下面的圖示:

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

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

那么

len(slic) = 2

cap(slic) = 3

append函數就理解為往slice中加入一個值,如果未達到容量(len

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)


網頁標題:Go語言中的_array、slice和map
URL鏈接:http://m.5511xx.com/article/djghgjd.html