Third glance in Go

來源:互聯網
上載者:User

標籤:

在Go語言裏關於數組(Array),切片(Slice)和映射表(Map)的使用是非常常見的。有過其他語言編程背景的人會比較熟悉一下,但是也是因爲過於的熟悉,從而導致一個慣性思維,往往就會踢到“石頭”,我就是其中之一。先說數組問題:

其他的沒什麼,但是在傳遞數組指針到函數的時候,Go裏面是這樣的如果你想傳遞一個數組指針到函數裏,你必須明確給出數組的大小

func updateItem(arr *[]int) {    arr[2] = 1}func main() {    arr := new([10]int)    updateItem(arr)}

這樣是不行的,編譯時會給你報一個類型不匹配的錯誤,你必須這樣寫

func updateItem(arr *[10]int) {    arr[2] = 1}

 除了指針以外,你還可以使用切片來傳遞數組,只不過會變成這樣,不過這也是Go裏面常規的做法。

func updateItem(arr []int) {    arr[2] = 1}func main() {    arr := new([10]int)    updateItem(arr[:])}

 另外一個疑惑就是切片的長度與容量的定義,搞不清楚make([]int, 10, 50)後,如何去填充後40個記憶體空間的值? 原來是可以通過切片的擴容來對後40個空間進行訪問。切片重新擴容必須以0開始,如

var slice1 = make([]int, 10, 50)slice1 = slice1[0:len(slice1) +1]

這樣就給切片增加了一個空間。

Third glance in Go

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.