Go 認識陣列

2021-08-31 19:17:56 字數 1974 閱讀 5815

陣列變數的定義

我們先試一下只申明型別,不賦初值。這時編譯器會給陣列預設賦上「零值」。陣列的零值就是所有內部元素的零值。

package main

import

"fmt"

func main (

)

下面我們看看另外三種變數定義的形式, 效果都是一樣的

func main (

)var b =[10

]int

c :=[8

]int

fmt.

println

(a) fmt.

println

(b) fmt.

println

(c)}

陣列的訪問

使用下標來簡單操作一下陣列,這個陣列裡存的是數字的平方值

package main

import

"fmt"

func main (

) fmt.

println

(squares)

}

陣列的下標越界檢查(高階知識)

上面的**中我們注意到可以使用內建函式 len() 來直接獲取陣列的長度。陣列的長度是編譯期確定的,當我們使用 len() 函式訪問陣列的長度屬性時,編譯器在背後偷偷把它替換成了整數值。

package main

import

"fmt"

func main (

) a[

101]

=255

fmt.

println

(a)}

上面的**執行結果說明了 go 語言會對陣列訪問下標越界進行編譯器檢查。有乙個重要的問題是,如果下標是乙個變數,go 是如何檢查下標越界呢?變數需要在執行時才可以決定是否越界,go 是如何辦到的呢?

答案是 go 會在編譯後的**中插入下標越界檢查的邏輯,所以陣列的下標訪問效率是要打折扣的,比不得 c 語言的陣列訪問效能。

陣列賦值

package main

import

"fmt"

func main (

)var b [9]

int b =a

a[0]

=12345

fmt.

println

(a) fmt.

println

(b)}

從上面**的執行結果中可以看出賦值後兩個陣列並沒有共享內部元素。如果陣列的長度很大,那麼拷貝操作是有一定的開銷的,使用的時候一定需要注意。下面我們嘗試使用不同長度的陣列賦值會有什麼結果

package main

import

"fmt"

func main (

)var b [10]

int b =a

a[0]

=12345

fmt.

println

(a) fmt.

println

(b)}

可以看出不同長度的陣列之間賦值是禁止的,因為它們屬於不同的型別。

陣列的遍歷

陣列除了可以使用下標進行遍歷之外,還可以使用 range 關鍵字來遍歷,range 遍歷提供了下面兩種形式。

package main

import

"fmt"

func main (

)for index :=

range a

for index,value :=

range a

}

認識資料庫

資料庫 database 是用來對資料進行操作的工具。所謂的資料,是指在現實世界冗雜的資訊中,提取出的有效字段組合。隨著計算機的發展,對資料的操作也經歷傳統的手工記錄資料 檔案系統 資料庫的演變過程。根據處理資料量的大小,我們將資料庫分成大中小三類。目前廣泛使用的大型資料庫有ibm的db2和甲骨文的...

資料探勘 認識資料

越來越多的人認識到,資料對這個世界的影響越來越大,掌握資料就掌握了發言權。如何從資料中找到想要的知識,是得到資料之後最需要關心的。資料探勘,也是知識發現的過程。1 理解資料 現實世界中,各行各業每時每刻都在產生數量龐大的資料集,讓人眼花繚亂,應該怎樣理解和處理資料呢?資料集由資料物件組成,乙個資料物...

認識資料庫

崗位需求 大資料時代 被迫需求 存資料 資料庫是所有軟體體系中最核心的存在dba 資料庫 db,database 概念 資料倉儲,軟體,安裝在作業系統 window,linux,mac 之上的 作用 儲存資料 管理資料 dbms 資料庫管理系統 關係型資料庫 sql 非關係型資料庫 nosql no...