Mastering Go 程式基本結構體

2022-07-08 12:57:16 字數 3301 閱讀 2119

for-loop

允許指定迭代次數

陣列、切片、對映、字串

形式1

for i := 0; i < 10; i++ 

注意

i是乙個本地臨時變數,迴圈結束就會"消失"

break 退出迴圈

continue 跳出當次迴圈,進行下一次迴圈判斷

形式2

// while

for condition

​// forever-loop

for

​// do-while

for ok := true; ok; ok = someexpression

形式3

不需要知道長度

返回值中有索引

for k, v := range collection 

slice

切片的底層是陣列, 不需要指定長度

切片作為函式引數傳遞是傳遞引用(雖然函式是值傳遞,copy切片的位址)

切片的零值是nil

宣告

s := int

s := make(int, 20)

注意:自動初始化為型別的零值

make

注意:自動初始化為型別的零值

s := make(int, 20)

subslice

獲取同乙個切片或者陣列的sub時,共享同樣的底層陣列

返回的切片指向底層陣列

s[1:3]

len and cap

len獲取元素個數、cap獲取切片容量

len(s)

cap(s)

位元組切片

bs := make(byte, 1024)

a := int

b := int

copy(a, b)

log.println(a)

log.println(b)

copy

a := int

b := int

copy(a, b)

log.println(a)

log.println(b)

sort

sort.slice(s, func(i, j int) bool )

map

nil map 無法操作

var m map[string]string

log.println(m)

m["key"] = "value" // panic: assignment to entry in nil map

const

常量值無法改變、數字、字串、布林

通常是全域性變數,不使用也不會報錯

常量定義無須宣告型別,編譯器自動判斷

常量最好定義到乙個包中

const version = "1.15.5"

iota

每定義乙個常量,iota+1

遇到定義乙個const,iota重置0

iota是int型別可以參與運算

const (

zaro = iota

onetwo

three

)const (

b = 1 << (iota * 10)

kbmbgb)

​const (

a = iota

_        // 跳過宣告c_

e)

pointer

指標即是位址

&獲取非指標變數的位址

*獲取指標的值,也稱為指標的解引用

指標可以作為引數也可以作為返回值

time and date

基本操作

t := time.now()

log.println(t.weekday(), t.year(), t.month(), t.day())

log.println(t.unix()) // unix時間是1970

程式基本概念

1.高階語言經 編譯器 編譯成 組合語言 或 機器指令 2.編譯器 負責將高階語言的語句翻譯成彙編或機器指令,該過程稱為 編譯 compiler 3.組合語言 將機器語言中一組一組的數字用 助記符 mnemonic 表示。彙編器 assembler 通過查表將助記符替換為數字 4.組合語言和機器語言...

樹的基本程式

author sky date 2011.11.8 content 樹的基本程式 include using namespace std define treenodemaxnum 20 typedef char elementtype typedef struct node 樹中的節點 treen...

canvas基本時針程式

canvas時鐘程式終於寫完了,在計算那些角度換算時,說明學好數學真的很重要,沒有良好的邏輯思路理解的有點蛋疼!想當年我數學是那麼溜,現在卻 花了半天吧canvas基本時鐘程式都理解了,並且自己加了乙個小美觀的分鐘點函式。js 如下 created by administrator on 2015 ...