golang之變數 常量 自定義型別及運算子 指標

2021-09-26 18:57:04 字數 4867 閱讀 6308

go語言是一種編譯型語言

gopath是乙個環境變數,用來表明你寫的go專案的存放路徑(工作目錄)。

變數名:gopath 值:g:\go

gopath路徑最好只設定乙個,所有的專案**都放到gopath的src目錄下

我在g盤新建乙個go的工作目錄,在該目錄下新建三個目錄

bin:用來存放編譯後生成的可執行檔案

pkg:用來存放編譯後生成的歸檔檔案

src:用來存放原始碼檔案

適合企業開發者的go專案結構

go採用的是utf-8編碼的文字檔案存放源**,理論上使用任何一款文字編輯器都可以做go語言開發,這裡推薦使用vs code和goland。 vs code是微軟開源的編輯器,而goland是jetbrains出品的付費ide。
第乙個go程式
package main  // 宣告 main 包,表明當前屬於哪個包,

// 包內元素共享,大寫字母開頭的變數可以被外部匯入

// go語言,單引號表示字元,雙引號表示字串

import

"fmt"

// 匯入內建 fmt 包

func

main()

進入對應的目錄或者直接右鍵單擊檔案,選擇在終端開啟:
go + 檔案路徑:

絕對路徑:

相對路徑:相對的是當前路徑

go + 專案路徑:

絕對路徑:

相對路徑:相對的是src

go run main.go # 編譯並執行,但不儲存編譯結果

go build # 編譯會生成乙個.exe檔案,結果放在當前路徑下

直接在命令列執行,會列印:hello world!

go build -o heiheihei.exe # -o可以指定編譯後檔案的路徑和名字

go install

# 編譯的是可執行專案:結果放在bin下

# 編譯的是非可執行:結果放在pkg下

go fmt # **格式化

編譯後放到linux執行
# 只需要指定目標作業系統的平台和處理器架構即可:

set cgo_enabled=

0// 禁用cgo

set goos=linux // 目標平台是linux

set goarch=amd64 // 目標處理器架構是amd64

# 然後執行:go build

即可編譯成乙個二進位制檔案

如果切換回windows
set cgo_enabled=0

set goos=darwin

set goarch=amd64

go build

注釋:
//單行注釋

/*多行注釋

所有的功能都是通過導包的形式呼叫的。

導的包必須使用,不然會報錯

*/

區域性變數定義完之後,一定得使用,否則會報錯

// 宣告變數:如果宣告的變數在後面的**沒有使用會報錯

var 變數名 變數型別(int

,float64

,bool

,string)

// 批量宣告

var(

a string

b int

c bool

)// 變數賦值:需要事先宣告好

a ="上海"

b =100

c =true

// 宣告與賦值放一起

var x string

="李一桐"

// 字串拼接

fmt.

printf

("%s哈哈哈%d"

, x, b)

//printf:列印格式化

%s:字串

%d:整型

%f:浮點型

%b:二進位制

%x:十六進製制

%o:八進位制

//短變數型別:只能在函式內部使用

func

main()

// 型別推導:有時我們在宣告變數時,忽略了型別,編譯器會根據等號右邊的值來推導變數的型別完成初始化

var name =

"李一桐"

var age =

24// 匿名變數

// 先定義乙個有返回值的函式

func

foo()(

string

,int

)func

main()

// 不能重複宣告同名變數,以下宣告會報錯

var name =

"aaa"

var name =

"aaa"

常量:記憶體的讀寫許可權只是可讀

// go語言的常量通過 const 關鍵字來宣告

const pi =

3.1415

const e =

2.7182

//宣告了這兩個常量以後,在整個程式執行期間,它們的值都不能再發生變化了

const a,b,c =

100,

false

,"xiaoli"

fmt.

println

(a,b,c)

// 多個常量可以一起宣告:常量組

const

( pi =

3.1415

e =2.7182

)// const同時宣告多個常量時,如果忽略了值則表示和上面一行的值相同

const

( n1 =

100 n2 //100

n3 //100

)// iota:列舉,只能在常量的表示式中使用

// 1、iota在const關鍵字出現時將被重置為0。

// 2、const中每新增一行常量宣告將使iota計數一次(iota可理解為const語句塊中的行索引)。 使用iota能簡化定義,在定義列舉時很有用。

// 3、iota可以參與運算

// 4、iota的中斷和恢復

// 5、多個iota同時使用,單獨計數互不影響

const

( n1 =

iota

//0 n2 //1

n3 //2

n4 //3

)//使用_跳過某些值

const

( n1 =

iota

//0 n2 //1

_ n4 //3

)//iota宣告中間插隊

const

( n1 =

iota

//0 n2 =

100//100,const中每新增一行常量宣告將使iota計數一次

n3 =

iota

//2 n4 //3

)const n5 =

iota

//0//定義數量級 (這裡的《表示左移操作,1<<10表示將1的二進位制表示向左移10位,也就是由1變成了10000000000,也就是十進位制的1024。同理2<<2表示將2的二進位制表示向左移2位,也就是由10變成了1000,也就是十進位制的8。)

const(_

=iota

kb =

1<<(10

*iota

)// 1<<10 ==> 2的10次方

mb =

1<<(10

*iota

)// 1<<20 ==> 1024*1024

gb =

1<<(10

*iota

)// 1<<30

tb =

1<<(10

*iota

)// 1<<40

pb =

1<<(10

*iota

)// 1<<50

)// 多個iota定義在一行

const

( a, b =

iota+1

,iota+2

//iota=0;a=1,b=2

c, d //iota=1;c=2,d=3

e, f //iota=2;e=3,f=4

)

reflect.typeof():列印某個變數的型別

type  自定義型別名  基礎型別

// 例:

type id int

var a id =

1fmt.

println

(a,reflect.

typeof

(a))

注意: 自定義型別和基礎型別不是乙個型別

算數運算,邏輯運算,賦值運算,比較運算,位運算,其它運算

1、算術運算子

// 算術運算子的坑

1、變數的型別是確定死的

2、2這樣的整型數字會自動轉換成浮點型

3、2.0這樣的浮點型數字會被自動轉換成整型

4、同型別之間才能進行運算

func

main()

2、指標

指標就是乙個存放了記憶體位址的變數

*型別:指標型別——變數型別

func

main()

自定義常量類

python定義常量類,兩種方式 1.通過命名風格來提醒使用者該變數表示常量,如常量名為大寫字母,單詞用下劃線連線,這是約定俗稱的方式,其實值是可以改的 2.通過自定義類來實現常量功能,要求必須字母全為大寫,且不可在修改這兩個條件 建立乙個const.py檔案,如下 python 純文字檢視 複製 ...

PHP中的自定義常量與類常量

1.自定義常量 常量的值只能是標量資料 boolean integer float 和 string 或 null 常量一旦被定義,就不能被重新定義或者取消定義。有兩種定義方式 define status 3 如果第三個引數設定為true,則大小寫不敏感 echo status const name...

golang 自定義型別

1.8 自定義型別 可將型別分為命名和未命名兩 大類。命名型別包括 bool int string 等,而 array slice map 等和具體元素型別 長度等有關,屬於未命名型別。具有相同宣告的未命名型別被視為同 一型別。具有相同基型別的指標。具有相同元素型別和 長度的 array。具有相同元...