go語言學習-基礎知識

go程序的基本結構

一個能夠最簡單的可運行的go程序須要知足下面兩個條件:數組

  • 有一個main()函數
  • main()函數在main包中

例如: 在go語言中的 hello world 程序以下:函數

// main.go
package main

func main() {
    println("hello world");
}

程序中的 package 關鍵字,用來聲明文件所屬的包(文件所屬的包跟文件名是沒有關係的),每個go文件都須要有一個包聲明; 而 func 關鍵字用來定義函數, 這裏咱們定義了一個main函數(main函數的形式是固定的)。println 函數是用來向標準輸出打印數據的,不過咱們通常狀況下是不使用它的。ui

go在編譯程序時,會自動在語句的結尾加上分號,全部這裏函數的第一的大括號,必須與()在同一行,不然返回就會加在()以後,就會出現錯誤,後面的一些流程控制語句也是如此code

運行程序:索引

go build main.go  // 編譯程序
./main         // 運行程序

咱們能夠將兩步合成一步:字符串

go run main.go    // 不會生成中間文件

在運行go程序時的入口就是 main 包下的 main 函數。編譯器

變量

go語言使用 var 聲明或者定義變量,它能夠用在函數以外定義,此時就是全局變量;而在函數內聲明時,就是局部變量。string

還有一種簡略的定義方式,使用 := 來定義,這種方式只能用在函數中,即定義局部變量it

且局部變量聲明以後必須使用for循環

package main

import "fmt"

var age int = 10   // 顯式的聲明變量的類型 int
var name = "Tom"    // go也能夠自動推斷處變量類型,這裏是 string

func main() {
    var sex = "man"

    hello := "hello"   // 簡略聲明方式

    fmt.Println(sex)
    fmt.Println(hello + "world")
}

這裏咱們定義了兩個全局變量 name 和 age, 還定義了兩個局部變量 sex 和 hello, 在 go 語言中,全局變量能夠聲明以後不是有,可是局部變量一旦聲明必須使用,不然編譯器會報錯;

注意: 這裏咱們使用 import 關鍵字引入了一個 fmt 的包,在go程序中咱們通常都應該使用 fmt 包中的函數來打印數據,而不是前面的println

基本數據類型:

類型 含義 默認值
bool 布爾值 false
byte 字節,uint8 0
rune Unicode碼點,int32 0
int,uint 與系統相關的有/無符號整數 0
int8,uint8 8位有/無符號整數 0
int16,uint16 16位有/無符號整數 0
int32,uint32 32位有/無符號整數 0
int64,uint64 64位有/無符號整數 0
float32 32位浮點數 0.0
float64 64位浮點數 0.0
complex64 64位複數 0+0i
complex128 128位複數 0+0i
string 字符串 「」

這些是比較基本的類型,還有一些類型,後面用到了再說

常量

常量的定義方式與變量類型,不過使用的是 const 關鍵字:

const PI float32 = 3.14159   
const USERNAME = "root"    // 自動類型推斷

常量必須在定義時,就初始化,而且一經定義便不可更改。

流程控制語句

if語句

package main

import "fmt"

func main() {
    a := 10
    if a > 5 {
        fmt.Println("a 大於 5")
    } else {
        fmt.Println("a 小於 5")
    }
}

一樣的這裏的 左大括號「{」必須與 if 或者 else 在同一行, 且這裏 else 必須與 if 的右大括號「}」在同一行。

go語言中沒有三元運算符

switch語句

switch (n){

    case 1:
        fmt.Println("n == 1")
    case 2:
        fmt.Println("n == 2")
    default:
        fmt.Println("n is default")
}

go中的 switch 是不須要 break 語句的,默認自動終止一個case; 若是須要繼續執行下一個,使用fallthrough,此時不會判斷條件

這裏switch語句還能夠包含初始化語句,使用分號」;」分隔,且case的條件,不單單能夠是常量值,還能夠是比較表達式;

for循環

go語言支持三種循環方式:

// 1. 常見的for循環,相似於C語言的循環,不過條件能夠不用括號
for i := 0; i < 10; i++ {
    fmt.Println(i);
}

// 2. 類while語法
i := 10
for i > 0 {
    fmt.Println(i)
    i--
}

// 一樣的,無限循環是這樣,省略條件
for {
    //...
}

// 3. for .. range,能夠用來循環字符串,數組,map,channel等等
// range返回 (索引值, 值)或者(鍵, 值); 若是隻有一個接收參數,則會忽略第二個返回值
s := "hello"

for i := range s {   // 這裏循環的是string的索引
    fmt.Println(s[i])  
}

標籤,goto, break, continue

go還支持標籤(區分大小寫),可使用goto跳轉到標籤,break 可⽤於 for、 switch、 select,⽽ continue 僅能⽤於 for 循環。

相關文章
相關標籤/搜索