Golang基礎知多少

2021-10-02 11:10:59 字數 4240 閱讀 2149

變數常量

運算子控制語句

首先,go語言中的**結構做乙個概覽

// 所屬包

package main

// 匯入依賴包

import

"fmt"

// 宣告常量

const filename =

"abc.txt"

// 宣告全域性變數

var a string

="hello"

// 型別宣告

type myint int

// 宣告結構體

type student struct

// 宣告介面

type learn inte***ce

// 函式定義

func

learngo()

// main函式

func

main()

package是工程管理中依賴關係的體現:

import語句用來匯入所依賴的package包:

別名

//給fmt起別名為f

import f "fmt"

//引用時則直接使用f

f.println

("hello"

)

.點標示

import(.

"fmt"

)//點標示的包匯入後,呼叫該包中的函式時,可以省略字首包名

println

("hello"

)

_下劃線標示

//說明:使用下劃線標示後,表示只執行該包中的init函式,但並不通過包名來呼叫包中其他函式。此下劃線用法,往往是為了註冊包裡面的引擎

)

資料型別是為了把不同的資料分成不同的型別,以便在使用時僅分配型別對應所需記憶體大小。

與其他程式語言不一樣的是,golang原生支援複數型別:

浮點型

複數 字串

布林型

其他 注意:下面是在網上看到的一張描述各資料型別儲存大小的示例圖,畫的比較好,看了讓人覺得一目了然:

除了上面的基礎資料型別外,go語言中還有些適合複雜場景需求的特殊資料型別

變數宣告和賦值可放在包內,或放在函式內。與其他程式語言最大的不同就是:變數型別寫在變數名後面

使用var關鍵字

var a string

a ="golang"

var b bool

var c, d int

var s1, s2 string

="hello"

,"world"

var(

x int

y float32

)

使用:=
// 此種方式,沒有明確的寫出變數的型別,但是會根據右邊對應的賦值來識別型別

a, b, x, y, s1, s2 :=

true

,false,3

,3.14

,"hello"

,"world"

注意:

只有布林型別,整、浮、複數型別,和字串型別支援宣告為常量。常量的宣告形式也分為兩種:

顯式宣告時指定了變數型別

const 變數名 變數型別 = 值

//例const filename string

="hello.txt"

隱式

宣告時不指定變數型別,這種無型別常量會根據右邊賦的值來識別型別

const 變數名 變數型別 = 值

//例const filename =

"hello.txt"

const a, b =3,

4

iota在const關鍵字宣告出現時候的預設值為0,之後是以步長1來按行遞增

注意:例1

const

( b =

1<

*iota

) kb

mbgb

tb)//上面示例的結果:b為2的0次方,kb為2的10次方,mb為2的20次方,依次類推

例2

const

( a =

iota

b =iota*3

_// 下劃線佔位符也用了一行,也會讓iota的值遞增

c =iota

)const

(// 此const宣告中的iota仍然從0開始,不會受到上乙個const宣告中的iota遞增的影響

d =iota*2

e =iota

f =iota

)const

( aa, bb =

iota

,iota*3

// 出現在同一行的多個`iota`的值相等

cc, dd _,

_// 佔位符的格式要與緊挨著的上一行的變數個數保持一致

ee =

iota

_ ff

)func

main()

// 執行結果:

// a 0

// b 3

// c 3

// d 0

// e 1

// f 2

// aa 0

// bb 0

// cc 1

// dd 3

// ee 3

// ff 5

+ - * / % ++ --== != > < >= <=&& || !& | ^ << >>

除了=等號以外,算術運算子或按位運算子寫在等號左邊就可以變成乙個新的賦值運算子,如:+= %= &= >>=

語法格式

if [賦值表示式;] 條件語句1  else if 條件語句2  else
注意:

例1: if

// 條件語句不需要括號

if num >

100else

if num <

0else

// 帶賦值的條件語句

if contents, err := ioutil,

readfile

(filename)

; err ==

nilelse

語法格式

switch [表示式]
注意:

例2: switch

// 判斷op為哪種運算子

switch op

// switch關鍵字後沒有表示式的情況

var score int=81

level :=

""switch

// 用type-switch的方式來判斷inte***ce變數中實際儲存的變數型別

var a inte***ce

a =32

switch a.

(type

)

語法格式

for 初始條件; 結束條件; 遞增表示式

注意:

例3: for

// 帶條件的常規for迴圈

sum :=

0for i :=

1; i <=

100; i++

// 死迴圈

for// 配合range進行遍歷

str :=

string

for key, value :=

range str

MySQL基礎概念知多少

mysql基礎概念相關的名詞還是挺多的,比如3大正規化 4種隔離界別 acid dql dml ddl,還有redo undo binlog等,本文就統一整理下mysql常見的基礎概念,方便小夥伴們翻閱 三大正規化 注意,三大正規化是資料表的建議設計原則,並不是非得完全按照這個來設計,具體設計還要根...

閘道器知多少

閘道器 gateway 顧名思義,就是乙個網路到另乙個網路的關口。維基百科對閘道器的定義為 在計算機網路中,閘道器 gateway 是 其他伺服器通訊資料的伺服器,接收從客戶端傳送來的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理。但是,很多時候,我們會將路由器和閘道器認為是同乙個概念。其實...

原型知多少

除了undefind,number,string,boolean是簡單的值型別,其他的null,object,function都是物件 函式有prototype屬性,它是物件,是函式屬性和方法的集合 每個物件都有乙個 proto 屬性 隱式原型 它指向建立這個物件的函式的原型 函式也是一種物件 ob...