博客 / 詳情

返回

GO語言學習:變量和常量

變量和常量

Go語言文件的基本結構

package main

// 導入語句
import "fmt"

// 函數外只能放置標識符(變量、常量、函數、類型)的聲明
// 程序的入口函數 main函數沒有參數也沒有返回值
func main(){

fmt.Println("Hello world")

}
標識符與關鍵字

標識符

在編程語言中標識符就是程序員定義的具有特殊意義的詞,比如變量名、常量名、函數名等等。 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

變量(Variable)的功能是存儲數據。

常見變量的數據類型有:整型、浮點型、布爾型等。

Go語言中的每一個變量都有自己的類型,並且變量必須經過聲明才能開始使用。

Go語言中的變量必須先聲明再使用

Go語言中的變量需要聲明後才能使用,同一作用域內不支持重複聲明。 並且Go語言的變量聲明後必須使用。

聲明變量

標準聲明

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 = "Q1mi"
var age = 18
匿名變量

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

func foo() (int, string) {

return 10, "Q1mi"

}
func main() {

x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)

}
匿名變量不佔用命名空間,不會分配內存,所以匿名變量之間不存在重複聲明。 (在Lua等編程語言裏,匿名變量也被叫做啞元變量。)

注意事項:

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

package main

import "fmt"

// Go語言中推薦使用駝峯式命名

var student_name string
var studentName string // 推薦小駝峯
var StudentName string

// go fmt main.go 格式化 main.go
// 聲明變量
// var name string
// var age int
// var isOk bool

// 批量聲明
var (

name string
age int
isOk bool

)

func main(){

name = "理想"
age = 16
isOk = true
// Go語言中非全局變量聲明必須使用,不使用就編譯不過去
fmt.Print(isOk) // 在終端中輸出要打印的內容
fmt.Println()
fmt.Printf("name:%s\n",name) // %s:佔位符 使用name這個變量的值去替換佔位符
fmt.Println(age) // 打印完指定的內容之後會在後面加一個換行符

// 聲明變量同時賦值
var s1 string = "whb"
fmt.Println(s1)
// 類型推導(根據值判斷該變量是什麼類型)
var s2 = "20"
fmt.Println(s2)
// 簡短變量聲明 只能在函數裏面使用
s3 := "哈哈"
fmt.Println(s3)
// s1 := "10" // 同一個作用域({})中不能重複聲明同名的變量
// 匿名變量是一個特殊的變量:_

}
常量

常量是程序運行中恆定不變的量

常量的聲明和變量聲明非常類似,只是把var換成了const,常量在定義的時候必須賦值。

const同時聲明多個常量時,如果省略了值則表示和上面一行的值相同。

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

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

package main

import "fmt"

// 常量
// 定義了常量之後不能修改
// 在程序運行期間不會改變的值
const pi = 3.1415926

const (

statusOk = 200
notFound = 404

)

// 批量聲明常量時,如果某一行聲明後沒有賦值,默認就和上一行一致
const(

n1 = 100
n2
n3

)

// iota 類似枚舉
const (

a1 = iota // 0
a2 // 1
a3 // 2

)

const(

b1 = iota // 0
b2       // 1
_       // 2
b3     // 3

)

// 插隊
const (

c1 = iota    // 0
c2 = 100    // 100
c3 = iota  // 2
c4        // 3

)

// 多個常量聲明在一行
const(

d1, d2 = iota + 1, iota + 2 // d1:1 d2:2
d3, d4 = iota + 1, iota + 2 // d3:2 d4:3

)

// 定義數量級
const (

    _  = iota
    KB = 1 << (10 * iota)
    MB = 1 << (10 * iota)
    GB = 1 << (10 * iota)
    TB = 1 << (10 * iota)
    PB = 1 << (10 * iota)
)

func main(){

// pi = 123
fmt.Println("n1:", n1)
fmt.Println("n2:", n2)
fmt.Println("n3:", n3)

fmt.Println("a1:", a1)
fmt.Println("a2:", a2)
fmt.Println("a3:", a3)

fmt.Println("b1:", b1)
fmt.Println("b2:", b2)
fmt.Println("b3:", b3)

fmt.Println("c1:", c1)
fmt.Println("c2:", c2)
fmt.Println("c3:", c3)
fmt.Println("c4:", c4)

fmt.Println("d1:", d1)
fmt.Println("d2:", d2)
fmt.Println("d3:", d3)
fmt.Println("d4:", d4)

}

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.