1. 程式人生 > 程式設計 >Go 語言基礎——變數常量的定義

Go 語言基礎——變數常量的定義

go語言不支援隱式型別轉換,別名和原有型別也不能進行隱式型別轉換

go語言不支援隱式轉換

變數

變數宣告

var v1 int 
var v2 string 
var v3 [10]int   // 陣列 
var v4 []int    // 陣列切片 
var v5 struct {     //定義結構體(Java中的實體類,自定義型別)   
    f int 
} 
var v6 *int    // 指標 
var v7 map[string] int // map,key為string型別,value為int型別 
var v8 func(a int) int 
//也可以這樣宣告變數
var (
    v1 int      
    v2 string
)      複製程式碼

宣告變數不需要使用分號作為結束符

變數的初始化

var v1 int = 10 // 定義並賦值 
var v2 = 10 // 編譯器可以自動推匯出v2的型別 
v3 := 10 // 編譯器可以自動推匯出v3的型別 複製程式碼

冒號和等號的組合:= 宣告並賦值

出現在:=左側的變數不應該是已經被宣告過的,否則會導致編譯錯誤

var a int

a := 2

會導致類似如下的編譯錯誤:no new variables on left side of :=

變數的賦值

var v10 int #定義變數
v10 = 1 #變數賦值複製程式碼

go語言提供多重賦值功能,比如下面這個交換i和j變數的語句:i,j = j,i

在不支援多重賦值的語言中,互動兩個變數的內容需要引入一箇中間變數:t = i; i = j; j = t;

匿名變數

我們在使用傳統的強型別語言程式設計時,經常會出現這種情況,即在呼叫函式時為了獲取一個 值,卻因為該函式返回多個值而不得不定義一堆沒用的變數。在Go中這種情況可以通過結合使 用多重返回和匿名變數來避免這種醜陋的寫法,讓程式碼看起來更加優雅。

假設GetName()函式的定義如下,它返回3個值,分別為firstName、lastName和 nickName:

func GetName() (firstName,lastName,nickName string) {  
    return "May","Chan","Chibi Maruko" 
} 複製程式碼

若只想獲得nickName,則函式呼叫語句可以用如下方式編寫:,,nickName := GetName()

這種用法可以讓程式碼非常清晰,基本上遮蔽掉了可能混淆程式碼閱讀者視線的內容,從而大幅 降低溝通的複雜度和程式碼維護的難度。

常量

常量是指編譯期間就已知且不可改變的值。常量可以是數值型別(包括整型、 浮點型和複數型別)、布林型別、字串型別等。

字面常量

程式中硬編碼的常量

-12 
3.14159265358979323846 // 浮點型別的常量 
3.2+12i      // 複數型別的常量 
true      // 布林型別的常量 
"foo"     // 字串常量 複製程式碼

Go語言的字面常量更接近我們自然語言中的常量概念,它是無型別的。只要這個常量在相應型別的值域 範圍內,就可以作為該型別的常量

常量定義

通過關鍵字const定義常量

const Pi float64 = 3.14159265358979323846  
const zero = 0.0             // 無型別浮點常量 
const (     
    size int64 = 1024     
    eof = -1                // 無型別整型常量 
)  
const u,v float32 = 0,3    // u = 0.0,v = 3.0,常量的多重賦值 
const a,b,c = 3,4,"foo"  // a = 3,b = 4,c = "foo",無型別整型和字串常量

//常量賦值是一個編譯期行為,所以右值也可以是一個在編譯期運算的常量表達式:
const s = 1000 * 60複製程式碼

預定義常量

Go語言預定義了這些常量:true、false和iota。

iota比較特殊,可以被認為是一個可被編譯器修改的常量,在每一個const關鍵字出現時被 重置為0,然後在下一個const出現之前,每出現一次iota,其所代表的數字會自動增1。

 const (          // iota被重設為0    
     c0 = iota    // c0 == 0     
     c1 = iota    // c1 == 1    
     c2 = iota    // c2 == 2 
 )   
  

const (     
    u         = iota * 42   // u == 0     
    v float64 = iota * 42   // v == 42.0 
)複製程式碼

碼字不易如果對你有幫助請給個關注

愛技術愛生活 QQ群: 894109590