Golang語言系列 01 Go語言簡介和變數

2022-06-11 14:06:11 字數 4193 閱讀 1600

go(又稱golang)是google開發的一種靜態強型別、編譯型、並髮型,並具有垃圾**功能的程式語言。

羅伯特·格瑞史莫(robert griesemer),羅勃·派克(rob pike)及肯·湯普遜(ken thompson)於2023年9月開始設計go,稍後ian lance taylor、russ cox加入專案。

go是基於inferno作業系統所開發的。go於2023年11月正式宣布推出,成為開放源**專案,並在linux及mac os x平台上進行了實現,後來追加了windows系統下的實現。

在2023年,go被軟體評價公司tiobe 選為「tiobe 2016 年最佳語言」。 目前,go每半年發布乙個二級版本(即從a.x公升級到a.y)

go語言開發環境配置,網路上已經有很多的教程,建議使用最新的go版本,並使用go model進行go包管理

go官網

mac環境

windows環境

可以在任意目錄下面建立乙個main.go檔案,檔案內容如下

建議做好目錄規劃,方便以後的學習

package main // 包名

// 匯入其他包

// 這裡可以匯入內建包和第三方包

import (

"fmt"

)// 程式的入口函式

func main()

執行方式:在main.go同級目錄下執行下面的命令

go run main.go
結果如下

lichengguo@lichengguodemacbook-pro ~ % ll main.go

-rw-r--r-- 1 lichengguo staff 74 11 4 16:16 main.go

lichengguo@lichengguodemacbook-pro ~ % go run main.go

hello world

go語言中每乙個變數都有自己的型別,並且變數必須要先宣告後使用。同一 作用域 內不支援重複宣告變數,並且go語言的變數宣告後必須使用,否則會報錯(全域性宣告的變數可以不必必須使用)。

go語言推薦使用駝峰命名方式,如studentname學生姓名

package main

import (

"fmt"

)func main()

go語言在宣告變數的時候,會自動對變數對應的記憶體區域進行初始化操作,每個變數都會被初始化成其型別的預設值。例如:

package main

import "fmt"

// 程式的入口函式

func main()

執行結果

lichengguo@lichengguodemacbook-pro % go run main.go

0 // 注意這一行的結果是空字串

false

package main

import "fmt"

func main()

執行結果

lichengguo@lichengguodemacbook-pro % go run main.go

tom01

tom02 20

20hello go

注意上面提到的變數都是在函式內部宣告並且使用的區域性變數

全域性變數

package main

import "fmt"

// 全域性變數

var (

// 批量宣告變數

name01 string

age01 int

)func main()

執行結果

從執行結果可以看出:全域性變數宣告以後不必必須使用,區域性變數宣告以後必須要使用

lichengguo@lichengguodemacbook-pro % go run main.go

0 // 注意這前面是有空字串的

常量:定義了常量以後不能修改,常量在定義的時候必須賦值。常量在程式執行期間不會改變

package main

import (

"fmt"

)// 宣告乙個常量

const pi = 3.14

// 批量宣告常量

const (

statusok = 200

notfoud = 404

)// 批量宣告常量時,如果某一行宣告後沒有賦值,預設就和上一行一致

const (

n1 = 100

n2 n3

)func main()

執行結果

lichengguo@lichengguodemacbook-pro % go run main.go

--- 宣告乙個常量 ---

3.14

--- 批量宣告常量 ---

200404

--- 批量宣告常量 預設 ---

n1: 100

n2: 100

n3: 100

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

iota在const關鍵字出現時將被重置為0,const中每新增一行常量宣告將使iota計數一次+1

使用iota能簡化定義,在定義列舉時很有用

package main

import (

"fmt"

)const (

a1 = iota //0

a2 //1

a3 //2

)const (

b1 = iota //0

b2 = iota //1

_ = iota //2

b3 = iota //3

)// 插隊

const (

c1 = iota //0 iota=0

c2 = 100 //100 iota=1

c3 = iota //2 iota=2

c4 //3 iota=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) // 1左移10位,二進位制10000000000 轉化為十進位制1024

mb = 1 << (10 * iota) // 1左移20位 100000000000000000000

gb = 1 << (10 * iota)

tb = 1 << (10 * iota)

pb = 1 << (10 * iota)

)func main()

執行結果

lichengguo@lichengguodemacbook-pro % go run main.go

----- a -----01

2----- b -----01

3----- 插隊 -----

010023

----- 多個常量宣告在一行 -----

1 22 3

----- 定義量級 -----

1024

1048576

1073741824

1099511627776

1125899906842624

01 Go 順序程式設計

go 的 bool 型別不支援 其他型別的強制轉換 int型別和int32被認為是兩種不同的型別。編譯器不會做自動轉換 複數的表示 var value1 complex64 value1 3.2 12i real 實部 imag 虛部 字元型別 rune 代表單個unicode字元 byte 代表u...

01Go命令介紹

go 提供了一套強大好用的命令系統 go build 編譯包和依賴項 go clean 刪除目標檔案 go env 列印go環境資訊 go fix 在包上執行go tool修復,用來修復老版本到新版本的問題 go fmt 在包源上執行gofmt go generate 通過處理源生成go檔案 go ...

01Go命令介紹

go 提供了一套強大好用的命令系統 go build 編譯包和依賴項 go clean 刪除目標檔案 go env 列印go環境資訊 go fix 在包上執行go tool修復,用來修復老版本到新版本的問題 go fmt 在包源上執行gofmt go generate 通過處理源生成go檔案 go ...