Go開發之路 -- Go語言基本語法

一. 變量

1.1 變量的聲明

Go 語言的每個變量都擁有本身的類型,必須通過聲明才能開始用。數據結構

標準格式:函數

var 變量名 變量類型

變量的聲明以關鍵字 var 開頭,行尾不須要寫分號ui

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

例如:指針

var a int
var b string
var c []float32
var d func() bool
var e struct{
    x int
}

代碼說明:code

  • 第1行,聲明一個整型類型的變量,能夠保存整數數值。
  • 第2行,聲明一個字符串類型的變量。
  • 第3行,聲明一個 32 位浮點切片類型的變量,浮點切片表示由多個浮點類型組成的數據結構。
  • 第4行,聲明一個返回值爲布爾類型的函數變量,這種形式通常用於回調函數,即將函數以變量的形式保存下來,在須要的時候從新調用這個函數。
  • 第5行,聲明一個結構體類型的變量,這個結構體擁有一個整型的 x 字段。

優雅格式聲明(推薦):blog

var (
    a int
    b string
    c []float32
    d func() bool
    e struct {
        x int
    }
)

使用關鍵字var和括號,能夠將一組變量定義放在一塊兒。 內存

 

1.2 變量的初始化

變量的聲明能夠包含初始值,每個變量對應一個值。字符串

若是初始化值已存在,則能夠省略類型;變量會從初始值中得到類型。編譯器

變量初始化的標準格式:

var 變量名 類型 = 表達式

簡化形式:

var 變量名 = 表達式

例如:

var x int = 100

能夠寫成:

var x = 100

 

默認值:

沒有明確初始值的變量聲明會被賦予它們一個默認值:

整型和浮點型變量的默認值爲 0。
字符串變量的默認值爲空字符串。
布爾型變量默認爲 bool。
切片、函數、指針變量的默認爲 nil。

 

1.3 短變量聲明並初始化

在函數中,簡潔賦值語句 := 可在類型明確的地方代替 var 聲明。

注意:函數外的每一個語句都必須以關鍵字開始(var等),所以 := 結構不能在函數外使用。

例如:

x := 100

編譯器會自動根據右值類型推斷出左值的對應類型。

注意:因爲使用了 :=,而不是賦值的 =,所以推導聲明寫法的左值變量必須是沒有定義過的變量。若定義過,將會發生編譯錯誤。


注意:在多個短變量聲明和賦值中,至少有一個新聲明的變量出如今左值中,即使其餘變量名多是重複聲明的,編譯器也不會報錯,例如:

x, z := a, b
y, z := a, b

 

1.4 多個變量同時賦值

使用Go的「多重賦值特性」,能夠輕鬆完成變量交換的任務。

package main
import "fmt"

func main() {
    var a = 100
    var b = 200
    a, b = b, a
    fmt.Println(a, b)
}

多重賦值時,變量的左值和右值按從左到右的順序賦值。

 

1.5 匿名變量(_)

在使用多重賦值時,若是不須要在左值中接收變量,可使用匿名變量。

匿名變量用一個下劃線 _ 來表示,使用匿名變量時,只須要在變量聲明的地方使用下劃線替換便可。例如:

var a int
a, _ = 100, 200

注意:匿名變量不佔用命名空間,不會分配內存。匿名變量與匿名變量之間也不會由於屢次聲明而沒法使用。

 

二. 常量

常量是恆定不變的值,例如圓周率。

常量的聲明與變量相似,只不過是使用 const 關鍵字。

常量能夠是字符、字符串、布爾值和數值。

常量不能用 := 語法聲明。

 

常量的聲明, 例如:

const pi = 3.1415926

注意:常量在聲明的時候必須賦值。

多個變量能夠一塊兒聲明,相似的,多個變量也能夠一塊兒聲明。例如:

const (
    pi = 3.1415926
    e = 2.718281
)

 

三. 基本數據類型

Go語言中有豐富的數據類型,除了基本的整型、浮點型、布爾型、字符串外,還有切片、結構體、函數、map、通道(channel)等。

Go 語言的基本類型和其餘語言大同小異。

3.1 整型

整型能夠分紅如下兩個大類:

按長度分爲:int八、int1六、int3二、int64

對應的無符號整型:uint八、uint1六、uint3二、uint64

其中,uint8 就是咱們熟知的 byte 型.

 

3.2 浮點型

 Go語言支持兩種浮點型數:

float3二、float64.

注意:沒有float

Go語言的浮點型默認聲明爲float64.

 

3.3 布爾型

 布爾型數據只有 true(真)和 false(假)兩個值。

注意:

在Go語言中,

true和false均爲小寫

不容許將整型強制轉換爲布爾型

 

3.4 字符串

字符串的兩種表示形式:

1. 雙引號,會識別轉義字符

2. 反引號,不會識別轉義字符。以字符串的原生形式輸出,包括換行和特殊字符。

 

3.4.1 字符串常見轉義符

轉義符 含義
\r 回車符(返回行首)
\n 換行符
\t 製表符
\' 單引號
\" 雙引號
\\ 反斜槓

 

3.4.2 反引號定義多行字符串

const str = ` 第一行
第二行
第三行
\r\n
`
fmt.Println(str)

代碼運行結果:

第一行
第二行
第三行
\r\n

 

3.5 字符

字符串中的每個元素叫作「字符」,在遍歷或者單個獲取字符串元素時能夠得到字符。

Go語言的字符有如下兩種:

  • 一種是 uint8 類型,或者叫 byte 型,表明了 ASCII碼的一個字符。
  • 另外一種是 rune 類型,表明一個 UTF-8 字符。當須要處理中文、日文或者其餘複合字符時,則須要用到 rune 類型。rune 類型實際是一個 int32。 

 

四. 數據類型的轉換

Go語言使用類型前置加括號的方式進行類型轉換,通常格式以下:

T(表達式)

其中,T 表明要轉換的類型。表達式包括變量、複雜算子和函數返回值等。

注意:在類型轉換時,須要考慮兩種類型的關係和範圍,是否會發生數值截斷等。

package main

import "fmt"

func main(){
	var n1 int = 20
	var n2 float64 = float64(n1)

	n2 = n2 + 3.6

	var n3 int32 = int32(n2) // 當將一個float類型轉成 int時,是直接去掉小數點後的部分

	fmt.Printf("n1 type=%T, val=%v; n2 type=%T, val=%v; n3 type=%T, val=%v\n",
		n1, n1, n2, n2, n3, n3)
}

代碼運行結果:

n1 type=int, val=20; n2 type=float64, val=23.6; n3 type=int32, val=23
相關文章
相關標籤/搜索