Go語言學習歷程——Go語言基礎語法入門

GO語言特性

開發者使用編程語言的三大分類(執行速度,簡易程度,開發難度)

1.執行速度快、編譯速度慢(編譯型):C,C++

2.執行速度較慢,編譯速度快(解釋型):JAVA,.NET

3.執行速度慢,開發難度小(動態腳本):Python,PHP


GO語言在三個條件做了平衡:易於開發,快速編譯,高效執行



1.helloworld


package main


import "fmt"


func main {

fmt.Println("hello world")

}



注意:

1.如果需要將程序編譯成二進制程序,要將包名寫成main包


第一個Go程序解讀:

1.package

Go源文件開頭必須使用package聲明代碼所屬包,包是Go代碼分發的最基本單位。若程序需要運行,則包名必須爲main。

2.import

import用於導入程序所依賴的所有包,此程序依賴fmt包。

3.func

func用於定義函數,main函數是程序的入口,若程序需要運行必須聲明main函數,main函數無參數也無返回值

4.fmt.Println

調用fmt.Println函數將參數信息打印到控制檯

編譯&運行:

# go build helloworld.go       (編譯出helloworld.exe文件)

# go build -o test.exe helloworld.go   (test.exe文件)

# go run helloworld.go         (編譯並運行helloworld.exe文件)



2.go 變量定義,變量限定適用範圍

變量是指堆一塊存儲空間定義名稱。

變量定義方式:

func main() {

var name string = "kk"//定義了類型也定義了初始值

var zerostring string // 定義變量類型,但不初始值

var typestring = "kk" //定義變量省略類型,不能省略初始值


//短聲明(必須在函數內使用)

shortstring := "kk"

fmt.Println(name,zerostring,typestring,shortstring)

}


變量需要先定義再使用,直接使用會報錯 

var name string = "abc"


name = "bca"


批量定義

var (

變量名1 變量類型1 = 值1

變量名2 變量類型2 = 值2

)


變量作用域:

變量查找會從函數內查找,沒有才會去查找函數外的相同變量 

子塊可以覆蓋父塊中使用的變量


變量標識符:

標識符:程序中定義的名字,變量名,常量名字,自定義類型,接口

規範:

1.必須滿足:組成只能由非空的unicode編碼字符串,數字,下劃線組成

2.必須滿足:必須以unicode編碼的字符串或下劃線開頭(不能以數字開頭)

3.必須滿足:不能與go的關鍵字衝突(package,func,var)

建議:

1.Ascill編碼(a-z,A-Z)數字,下劃線

2.變量使用駝峯式

myName

3.與go內置變量不要衝突


函數級別:

func main {

var msg string = "hello workd"

fmt.Println(msg)

}


包級別:

var packageVar string = "package Var"

func main {

var msg string = "hello workd"

fmt.Println(msg, packageVar)

}


子塊級別:

var packageVar string = "package Var"

func main {

var msg string = "hello workd"

{

var blockvar string = "block"

fmt.Println(packageVar,blockvar)

}

fmt.Println(msg, packageVar)

}

}


3.go 常量

常量一旦定義後不能修改


常量定義:

①常量

package main


import "fmt"


const (

packName string = "package"

packMsg = "pack"

A = "test"

B  // 使用前一個常量的值進行初始化 B->A

C  // 使用前一個常量的值進行初始化 C->B

D = "test2"

E

F

)  //使用前一個常量的值進行初始化


func main() {

const name string = "abc" 

fmt.Println(name, B, C, E, F)

}


②枚舉

package main


import "fmt"


func main() {

const (

Mon = iota //在常量內使用iota,初始化爲0,每次調用+1

Tuesd

Wed

Thur

Fir

Sat

Sun

)

fmt.Println(Mon)

}


4.go 變量打印


 fmt.Printf("%T, %v, %#v", name, name, name)

 佔位符

 %T:打印變量類型

 %v:按某種格式打印變量

 %#v:按某種格式打印變量


5.go 數據類型


布爾類型:

package main


import "fmt"


func main() {

isGirl := false

fmt.Println("%T,%#v", isGirl, isGirl)

}


整數類型:

//int

/int8,int16,int32,int64

常用操作:

1.算數運算符:+,-,*,/,%,++,--

2.關係運算符:>,<,==,!=

3.位運算符:&,|

4.賦值運算符:=,+=,-=,*=


浮點數類型:

package main


import (

"fmt"

)


func main() {

var height float32 = 1.68


fmt.Printf("%T %#v %f\n", height,height,height)

}


邏輯運算:

與:左操作數與右操作數爲true,結果爲true

或:左操作數與右操作數只要有一個爲true,結果爲true

非:取反 

package main


import "fmt"


func main() {

a, b, c, d =: true, true ,false ,false

fmt.Println("a, b", a && b) 

fmt.Println("a, c", a && c)

}

 

6.條件語句


①if語句

package main


import "fmt"


func main() {

var y string

fmt.Print("買西瓜麼:")

fmt.Scan(&y)

fmt.Println("你輸入的是", y)

if y == "yes" {

fmt.Println("買一個西瓜")

}

}


初始化子語句

可以在if語句中初始化語句塊內的局部變量,多個語句之間使用逗號分隔(;)

if flag := true;flag {

fmt.Println("flag:",flag)

}


②選擇語句switch case

package main


import "fmt"


func main() {

var y string

fmt.Print("請輸入:")

fmt.Scan(&y)

switch y {

case "yes", "y":

fmt.Println("輸入的是1")

case "no", "n":

fmt.Println("輸入的是no")

default:

fmt.Println("2222")

}

}


7.循環語句for,break,continue

package main


import "fmt"


func main() {

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

fmt.Println("1234")

}

var index = 1

for index <= 10 {

if index == 5 {

break

}

if index == 6 {

continue

}

fmt.Println(index)

index++

}

}


for-range

用於遍歷可迭代對象中的每個元素,例如字符串,數組,切片,映射,通道等

package main


import "fmt"


func main() {

var letters string

letters = "伍俊錡"

for _, k := range letters {

fmt.Printf("%q", k)

}

}


針對包含unicode字符的字符串便利,時需要使用for-range,range返回兩個元素分別爲字節索引和rune字符,可通過空白標識符忽略需要接受的變量。


類while,死循環


func main() {

for {

total += index

index ++

if index > 100 {

break

}

}

}








 





























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章