国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - 理解Golang中的數組(array)、切片(slice)和map

理解Golang中的數組(array)、切片(slice)和map

2020-04-09 14:09junjie Golang

這篇文章主要介紹了理解Golang中的數組(array)、切片(slice)和map,本文先是給出代碼,然后一一分解,并給出一張內圖加深理解,需要的朋友可以參考下

我比較喜歡先給出代碼,然后得出結論

數組

 

復制代碼 代碼如下:


package main

 

import (
    "fmt"
)

func main() {
    arr := [...]int{1, 2, 3}
    //打印初始的指針
    fmt.Printf("the pointer is : %p \n", &arr)
    printPointer(arr)
}

func printPointer(any interface{}) {
    fmt.Printf("the pointer is : %p \n", &any)
}

 

結果

 

復制代碼 代碼如下:

1 the pointer is : 0xc082008580
2 the pointer is : 0xc0820001d0

 

切片

 

復制代碼 代碼如下:


package main

 

import (
    "fmt"
)

func main() {
    arr := make([]int, 3)
    //打印初始的指針
    fmt.Printf("the pointer is : %p \n", arr)
    printPointer(arr)
}

func printPointer(any interface{}) {
    fmt.Printf("the pointer is : %p \n", any)
}

 

結果

 

復制代碼 代碼如下:

1 the pointer is : 0xc082008580
2 the pointer is : 0xc082008580

 

map

 

復制代碼 代碼如下:


package main

 

import (
    "fmt"
)

func main() {
    arr := make(map[int]string)
    //arr := [3]int{1, 2, 3}
    //打印初始的指針
    fmt.Printf("the pointer is : %p \n", arr)
    printPointer(arr)
}

func printPointer(any interface{}) {
    fmt.Printf("the pointer is : %p \n", any)
}

 

運行結果

 

復制代碼 代碼如下:

1 the pointer is : 0xc082007c80
2 the pointer is : 0xc082007c80

 

由此,我們看到數組本身傳過去的是值,傳到函數之后,被開辟了另外一個空間。

因為數組就是他本身。這一句好像不太好理解。

這是切片 arr := make([]int, 3)  而arr 本身不是一個數組,至少不是我們所想要的指向的一個數組。只是arr里有一個地址指向數組。

這么舉個例子:

arr := [...]int{1,2,3,4,5} 這是一個數組,懂得go語言的都明白。  arr本身就是數組

arrSlice := arr[0:5]  這是一個切片。 打印所得的值是一樣的,和上面。  arrSlice本身不是數組,只是arrSlice本身有一個值是指向arr的指針。

切片是指一個結構體,大體結構像這樣:

 

復制代碼 代碼如下:

struct slice{
     ptr *Elem
    len int
    cap int
 }

 

也就是說,上面的arrSlice其實是一個結構體。里面有一個屬性 ptr指向數組 arr

其實arrSlice也是傳到函數里,也是進行了復制。但是盡管傳過去是一個復制的結構體,他的屬性ptr,沒有變。還是一個指向原數組的指針。

下面的例子見證他自己傳過去,是一個復制的過程:

 

復制代碼 代碼如下:


package main

 

import (
    "fmt"
)

func main() {
    arrSlice := make([]int, 4)
    fmt.Printf("the pointer is : %p \n", arrSlice)
    fmt.Printf("the pointer is : %p \n", &arrSlice) //這是arrSlice本身的指針,也就是結構體的指針
    printPointer(arrSlice)
}

func printPointer(any interface{}) {
    fmt.Printf("the pointer is : %p \n", any)
    fmt.Printf("the pointer is : %p \n", &any) //打印傳過來的結構體arrSlice的指針
}

 

看結果:

 

復制代碼 代碼如下:

the pointer is : 0xc0820085a0
the pointer is : 0xc082008580
the pointer is : 0xc0820085a0
the pointer is : 0xc0820001d0

 

第1、3個的打印是打印這個結構體的ptr屬性,也就是指向數組的指針。

其實這個結構體傳到函數里,是一個復制的過程,第2、4的指針不一樣。

大家在對照下面的圖片理解一下:

理解Golang中的數組(array)、切片(slice)和map

延伸 · 閱讀

精彩推薦
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品天堂 | 亚洲男人的天堂网站 | 亚洲在线视频播放 | 免费视频一区 | 日韩91视频 | 亚洲自拍偷拍精品 | 日韩成人在线网站 | 黑人精品 | 天天久久| 三级色黄| 成人精品视频在线观看 | 高清xxxx | 精品二区 | 中文字幕高清视频 | 91社区在线观看 | 久久久久久亚洲精品 | 国产精品国产a级 | 不卡在线一区 | 日韩电影在线 | 久久99精品国产麻豆宅宅 | 精品美女 | 美女主播精品视频一二三四 | www中文字幕在线观看 | 久久2| 亚洲视频在线免费观看 | 国产亚洲精品美女久久久久久久久久 | 国产欧美在线观看 | 国产精品久久久久久a | 国产中文字幕亚洲 | 一级毛片免费看 | 亚洲一区二区福利 | 一级片免费在线观看视频 | 亚洲成人一区二区 | 国产免费天天看高清影视在线 | 亚洲国产日韩一区 | 亚洲欧美日韩在线 | 亚洲精品电影在线观看 | 亚洲精品在线视频 | 日韩在线视频观看 | 自拍视频在线观看 | 日韩av片在线免费观看 |