1. 程式人生 > 實用技巧 >go語言基礎一(變數常量)

go語言基礎一(變數常量)

識別符號

在程式語言中識別符號就是程式設計師定義的具有特殊意義的詞,比如變數名、常量名、函式名等等。 Go語言中識別符號由字母數字和_(下劃線)組成,並且只能以字母和_開頭。 舉幾個例子:abc,_,_123,a123

關鍵字

關鍵字是指程式語言中預先定義好的具有特殊含義的識別符號。 關鍵字和保留字都不建議用作變數名。

Go語言中有25個關鍵字:

    break        default      func         interface    select
    case         defer        go           map          struct
chan else goto package switch const fallthrough if range type continue for import return var

此外,Go語言中還有37個保留字。

    Constants:    true  false  iota  nil

        Types:    int  int8  int16  int32  int64  
                  
uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error Functions: make len cap new append copy close delete complex real imag panic recover

變數宣告

標準宣告

Go語言的變數宣告格式為:

var 變數名 變數型別

變數宣告以關鍵字var開頭,變數型別放在變數的後面,行尾無需分號。 舉個例子:

var name string
var age int
var isOk bool

批量宣告

每宣告一個變數就需要寫var關鍵字會比較繁瑣,go語言中還支援批量變數宣告:

var (
    a string
    b int
    c bool
    d float32
)

變數的初始化

Go語言在宣告變數的時候,會自動對變數對應的記憶體區域進行初始化操作。每個變數會被初始化成其型別的預設值,例如: 整型和浮點型變數的預設值為0。 字串變數的預設值為空字串。 布林型變數預設為false。 切片、函式、指標變數的預設為nil

當然我們也可在宣告變數的時候為其指定初始值。變數初始化的標準格式如下:

var 變數名 型別 = 表示式

舉個例子:

var name string = "Q1mi"
var age int = 18

或者一次初始化多個變數

var name, age = "Q1mi", 20

型別推導

有時候我們會將變數的型別省略,這個時候編譯器會根據等號右邊的值來推導變數的型別完成初始化。

var name = "Q1mi"
var age = 18

短變數宣告

在函式內部,可以使用更簡略的:=方式宣告並初始化變數。區域性變數聲明後必須使用

package main

import (
    "fmt"
)
// 全域性變數m
var m = 100

func main() {
    n := 10
    m := 200 // 此處宣告區域性變數m
    fmt.Println(m, n)
}

匿名變數

在使用多重賦值時,如果想要忽略某個值,可以使用匿名變數(anonymous variable)。 匿名變數用一個下劃線_表示,例如:

func foo() (int, string) {
    return 10, "Q1mi"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}

匿名變數不佔用名稱空間,不會分配記憶體,所以匿名變數之間不存在重複宣告。 (在Lua等程式語言裡,匿名變數也被叫做啞元變數。)

注意事項:

  1. 函式外的每個語句都必須以關鍵字開始(var、const、func等)
  2. :=不能使用在函式外。
  3. _多用於佔位,表示忽略值。

iota

iota是go語言的常量計數器,只能在常量的表示式中使用。

iota在const關鍵字出現時將被重置為0。const中每新增一行常量宣告將使iota計數一次(iota可理解為const語句塊中的行索引)。 使用iota能簡化定義,在定義列舉時很有用。

舉個例子:

const (
        n1 = iota //0
        n2        //1
        n3        //2
        n4        //3
    )

常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。 常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。

const pi = 3.1415
const e = 2.7182

幾個常見的iota示例:

使用_跳過某些值

一,變數宣告

1,變數宣告在函式的外部,是全域性變數,必須要以var開頭。

注意函式外部,不能寫語句

可以使用批量宣告

2,函式內部宣告的變數必須使用否則報錯,簡短宣告變數的方式只能用在函式內部

3,常量宣告

宣告時給定初值,省略時,下一行的常量值等於上一行的值。

4,ioto常量計數器

遇到const關鍵字ioto的值為0

每一行常量宣告,ioto+1

二,為了處理非ASCII碼,提出了rune型別,本質就是int32的陣列,裡面存放的是ASCII碼值

byte型別,本質就是int8的陣列,用來對字串進行但字元操作。

注意,字串是一種基本型別,不能對單個字元操作,必須轉換為上面的兩種型別,後才可以

三,沒有隱式型別轉換,只有顯示轉換。

執行go程式時候的命令

(1)go build

  1,在專案的目錄下執行go build

  2,在其他目錄下執行go build ,需要在後面新增路徑(路徑要從GOPATH的src目錄下開始)

    go build 是將其編譯成可執行的二進位制檔案

  3,給編譯成的可執行二進位制檔案指定名稱

   go build -o 指定名稱

(2)go run

  像腳步語言一樣執行go程式

(3)go install

    分為2步,將go程式編譯成可執行檔案,再將檔案拷貝到GOPATH/bin下

(4)支援跨平臺編譯