天天看點

Go語言探索 - 10(原創)

Go語言基礎系列部落格用到的所有示例代碼 上一篇文章

 主要學習了Go語言的結構體以及結構體指針,本篇文章主要學習Go語言的切片以及Map。

Go語言數組的長度不可改變,但是這在一些特定場景中就不太适用,比如我們現在有一款電商商品,想統計使用者的消費記錄(每個使用者的消費記錄可能不一樣,有的一天幾十單有的一個季度就幾單)Go語言團隊基于此中提供了相較于一種靈活,功能強悍的内置類型切片("也稱動态數組",這個可以了解為Java的List)。

與數組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

如何定義切片?

var 切片變量名 [ ] 資料類型 = make([ ] 資料類型, len)

也可以簡寫為 切片變量名 := make([ ] 資料類型, len)

或者直接:切片變量名  := [ ] 資料類型 { 1,2,3 }

Go語言探索 - 10(原創)

初始化切片

我們可以通過切片的索引擷取新的切片:

Go語言探索 - 10(原創)

其中 紅色矩形内的代碼 是通過我們定義好的切片,然後使用

s[0:3]

  擷取新的切片。這裡的0代表的是startIndex 也就是切片的開始索引;3代表的是endIndex,也就是結束索引

len() 和 cap() 函數

切片是可索引的,可以通過 len() 方法擷取長度。

切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少。

Go語言探索 - 10(原創)
append() 和 copy() 函數

既然切片的長度是不固定的,那麼它肯定有添加元素的方法。Go語言中,切片添加元素的方法是使用 append( )。

另外,切片也是允許拷貝的,拷貝切片使用的方法是copy( )。

下面的代碼,首先初始化一個空切片,然後對切片的元素進行添加 然後copy到新的切片,最後列印切片屬性值。

Go語言探索 - 10(原創)
如何周遊切片?
Go語言探索 - 10(原創)

周遊切片

簡單介紹完了切片,下面學習GO語言的Map(類似于Java中的Map,一個key對應一個value)

Map 是一種無序的鍵值對集合。Map最重要的一點是通過 key 來快速檢索資料,key 類似于索引,指向資料的值。但是,Map 是無序的,我們無法決定它的傳回順序,這是因為 Map 是使用 hash 表來實作的。

如何定義 Map?以下兩種方式都可以

可以使用内建函數 make :var map_變量名 map[key_資料類型]value資料類型

也可以使用 map 關鍵字來定義 :  變量名 := make(map[key_資料類型]value資料類型)

以下代碼是Map初始化的兩種寫法以及向Map添加元素,根據key删除元素

Go語言探索 - 10(原創)

Map

如何周遊Map?周遊Map可以使用range關鍵字 進行周遊 代碼如下:

Go語言探索 - 10(原創)

周遊Map

本篇文章主要學習的是Go語言的切片和Map,切片本質就是一個長度不确定的動态數組,類似于Java的List;而Map也類似于Java中的Map,屬于key - value 對應的結構模式。計算機語言的互通性展現在方方面面,一些思想都是互通與傳承的。

如果這篇文章對你有幫助,希望各位看官留下寶貴的star,謝謝。

Ps:著作權歸作者所有,轉載請注明作者, 商業轉載請聯系作者獲得授權,非商業轉載請注明出處(開頭或結尾請添加轉載出處,添加原文url位址),文章請勿濫用,也希望大家尊重筆者的勞動成果