Golang學習記錄 五

2021-10-10 23:47:07 字數 3943 閱讀 4558

golang學習記錄(一):

golang學習記錄(二):

golang學習記錄(三):

golang學習記錄(四):

golang學習記錄(五):

golang學習記錄(六):

go 是乙個開源的程式語言,它能讓構造簡單、可靠且高效的軟體變得容易。

go是從2023年末由robert griesemer, rob pike, ken thompson主持開發,後來還加入了ian lance taylor, russ cox等人,並最終於2023年11月開源,在2023年早些時候發布了go 1穩定版本。現在go的開發已經是完全開放的,並且擁有乙個活躍的社群。

go 語言切片是對陣列的抽象。

go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片(「動態陣列」),與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

nil空切片

package main

import

"fmt"

func

main()

}func

printslice

(x [

]int

)

切片擷取

package main

import

"fmt"

func

main()

printslice

(numbers)

/* 列印原始切片 */

fmt.

println

("numbers =="

, numbers)

/* 列印子切片從索引1(包含) 到索引4(不包含)*/

fmt.

println

("numbers[1:4] =="

, numbers[1:

4])/* 預設下限為 0*/

fmt.

println

("numbers[:3] =="

, numbers[:3

])/* 預設上限為 len(s)*/

fmt.

println

("numbers[4:] =="

, numbers[4:

])numbers1 :=

make([

]int,0

,5)printslice

(numbers1)

/* 列印子切片從索引 0(包含) 到索引 2(不包含) */

number2 := numbers[:2

]printslice

(number2)

/* 列印子切片從索引 2(包含) 到索引 5(不包含) */

number3 := numbers[2:

5]printslice

(number3)

}func

printslice

(x [

]int

)

如果想增加切片的容量,我們必須建立乙個新的更大的切片並把原分片的內容都拷貝過來。

go 語言中 range 關鍵字用於 for 迴圈中迭代陣列(array)、切片(slice)、通道(channel)或集合(map)的元素。在陣列和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。

package main

import

"fmt"

func

main()

sum :=

0for

_, num :=

range nums

fmt.

println

("sum:"

, sum)

//在陣列上使用range將傳入index和值兩個變數。上面那個例子我們不需要使用該元素的序號,所以我們使用空白符"_"省略了。有時侯我們確實需要知道它的索引。

for i, num :=

range nums

}//range也可以用在map的鍵值對上。

kvs :=

map[

string

]string

for k, v :=

range kvs

//range也可以用來列舉unicode字串。第乙個引數是字元的索引,第二個是字元(unicode的值)本身。

map 是一種無序的鍵值對的集合。map 最重要的一點是通過 key 來快速檢索資料,key 類似於索引,指向資料的值。

map 是一種集合,所以我們可以像迭代陣列和切片那樣迭代它。不過,map 是無序的,我們無法決定它的返回順序,這是因為 map 是使用 hash 表來實現的。

package main

import

"fmt"

func

main()

/*檢視元素在集合中是否存在 */

capital, ok := countrycapitalmap [

"american"

]/*如果確定是真實的,則存在,否則不存在 */

delete() 函式delete() 函式用於刪除集合的元素, 引數為 map 和其對應的 key。例項如下:

package main

import

"fmt"

func

main()

fmt.

println

("原始地圖"

)/* 列印地圖 */

for country :=

range countrycapitalmap

/*刪除元素*/

delete

(countrycapitalmap,

"france"

) fmt.

println

("法國條目被刪除"

) fmt.

println

("刪除元素後地圖"

)/*列印地圖*/

golang閉包學習記錄

func testclosure time.sleep time.second 如果這裡不sleep,上面的協程還沒來得及修改共享變數,下面輸出1,fmt.print i 輸出2,說明閉包是對同一變數的引用,而不是copy type field struct func p field print f...

記錄學習Golang的過程

開啟終端執行export path path usr local go bin 將go加入環境變數 現在可以建立乙個go的檔案了 編輯器自己看使用習慣 建立檔案後我們來語言第一步 hello world 開啟終端執行 go run hello.go 在這裡要注意,我們要執行的方法名和包名是要一致的 ...

JavaScript學習記錄五

程式設計思想 把一些生活中做事的經驗融入到程式中 面向過程 凡事都要親力親為,每件事的具體過程都要知道,注重的是過程 物件導向 根據需求找物件,所有的事都用物件來做,注重的是結果 物件導向特性 封裝,繼承,多型 抽象性 js不是物件導向的語言,但是可以模擬物件導向的思想 js是一門基於物件的語言 萬...