Go語言基礎語法之一

2021-10-08 14:17:23 字數 3726 閱讀 3912

參考文獻

開發環境:vscode配套裝完

go版本: go version go1.14.4 windows/amd64

package main

import( "fmt")

func main()

以上是go語法基礎結構,也是第乙個**。

注意:go常用只能用雙引號,單引號初學階段可以直接放棄記憶,當他不存在,後續強大了自己查原因。

定義變數

// 方式1

var test string;

// 方式2

test2 := "will be string type!"

test3, test4 := "test3", "test4"

// 方式3

var test3, test4 string

注意:go中未使用的變數不允許定義

資料型別以及定義序號

型別和描述

1布林型 布林型的值只可以是常量 true 或者 false。乙個簡單的例子:var b bool = true。

2數字型別整型 int 和浮點型 float32、float64,go 語言支援整型和浮點型數字,並且支援複數,其中位的運算採用補碼。

3字串型別,字串就是一串固定長度的字元連線起來的字串行。go 的字串是由單個位元組連線起來的。go 語言的字串的位元組使用 utf-8 編碼標識 unicode 文字。

4派生型別:包括:

(a) 指標型別(pointer)

(b) 陣列型別

(d) channel 型別

(e) 函式型別

(f) 切片型別

(g) 介面型別(inte***ce)

(h) map 型別

// 定義數字

var int_1 int

int_1 = 1

fmt.println(int_1)

int_2 := 2

fmt.println(int_2)

var int_8 int8

int_8 = 127 // 2^8-1=127

fmt.println(int_8)

var int_16 int16

int_16 = 111

fmt.println(int_16)

// 定義字串

var string_1 string

string_1 = "**** trump"

string_2 := "**** trump fmy"

fmt.println(string_1, string_2)

string_3 := `

mutil line

`// 定義陣列

var balance = [...] float32

fmt.println(balance)

var balance2=[...]int

fmt.println(balance2)

balance2[0]= 1000000000000

fmt.println(balance2)

// 列印陣列長度

fmt.println(len(balance2))

// channel 通道型別

chan_var := make(chan int)

go func() ()

chan_2 := <- chan_var

fmt.println(chan_var)

fmt.println(chan_2)

// 切片型別

var slince_1 string

fmt.println(slince_1)

len := 10

var slice1 string = make(string, len)

//也可以簡寫為

slice2 := make(string, len)

fmt.println(slice1, slice2)

for迴圈的兩種方式

var balance2=[...]int

fmt.println(balance2)

balance2[0]= 1000000000000

fmt.println(balance2)

for i:=0;i其中由於go未經使用的變數不允許定義,故使用range時,會返回兩個變數,這裡定義為key和value,而key我並沒有用到,故要使用佔位符__代表賦值但不使用,相對賦值給乙個佔位而已。

值得注意的是range可以應用於陣列,切片,map等型別中。

結構體型別

結構體型別大致可以彌補類模式缺少的情況,可以組建乙個結構體當做類來使用,也具備初始化和賦值方式。

package main

import "fmt"

type struct_book struct

func main()

channel通道型別詳解

通道型別作用於幾個協程中都有使用的變數的傳遞,防止協程中乙個變數值和另乙個協程使用不一致。

// 建立通道變數,使用切片建立+chan關鍵字

chan_var := make(chan int)

go func() ()

// 由於通道變數是引用傳遞,即變數儲存的是記憶體位址,故要將通道變數賦值出來給新的變數

chan_2 := <- chan_var

fmt.println(chan_var)

fmt.println(chan_2)

go 語言切片是對陣列的抽象。go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片(「動態陣列」),與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

切片型別會常常用到,故這裡作詳細說明。

指標型別指向乙個記憶體位址,用引用,傳遞引用等。指標型別不能之前賦值乙個實際的值,可以交換記憶體位址。

var ptr_1 * int

string_4 := 100;

ptr_1 = &string_4

fmt.println(ptr_1)

go並沒有異常捕捉機制,錯誤只能手動返回和處理,且需要使用介面型別:error 的struct,改介面屬於底層,直接使用即可。

demo ** 菜鳥教程

// 定義乙個 divideerror 結構

type divideerror struct

// 實現 `error` 介面

func (de *divideerror) error() string

// 定義 `int` 型別除法運算的函式

func divide(vardividee int, vardivider int) (result int, errormsg string)

errormsg = ddata.error()

return

} else

}func main()

}

1.菜鳥教程go教程

2.go error處理

go語法之一

go語法 go語言要求public的變數必須以大寫字母開頭,private變數則以小寫字母開頭,這種做法不僅免除了public private關鍵字,更重要的是統一了命名風格。go語言對進行了強制,必須如下寫法 if expression 下面的寫法是錯誤的 if expression go 的花括...

go語法之一

go語法 go語言要求public的變數必須以大寫字母開頭,private變數則以小寫字母開頭,這種做法不僅免除了public private關鍵字,更重要的是統一了命名風格。go語言對進行了強制,必須如下寫法 if expression 下面的寫法是錯誤的 if expression go 的花括...

GO語言基礎語法

語言變數 go語言的語言符號又稱記法元素,共包括5類,標籤符 identifier 關鍵字 keyword 操作符 operator 分隔符 delimiter 字面量 literal 它們是組成go語言 和程式的最基本單位。go語言的所有源 都必須由 unicode 編碼規範的 utf 8 編碼格...