一、包的概念 |
包是go語言中不可缺少部分,在每個go源碼的第一行進行定義,定義方式是:package "包名",並且該名稱是作為調用該包時候所使用的名稱。
包的概念總結:
- 每個 Go 文件都屬於且僅屬於一個包。一個包可以由許多以
.go
為擴展名的源文件組成,因此文件名和包名可能不同,為了規范,功能相似或者屬於相同性質的源碼歸集到相同的包名中。 - 每個應用程序都必須有且只有一個包名稱為main,他是該程序的入口,執行時候會尋找包名為main的代碼
- 包與包之間可以被相互調用,主要為了減少代碼重復性
- 包一旦被引入就需要被使用,除非引入的時候忽略它(前面加_表示忽略它,只是用它來初始化),如果引入了包,而在代碼中沒用使用,運行時候會報錯
二、包的引入 |
1.包引入的方法
方法一:
import "fmt" import "os"
方法二:
import "fmt"; import "os"
方法三(推薦!)
import ( "fmt" "os" )
2.引入其他包
go語言中,引入包的路徑是根據GOPATH/src 這個環境變量作為相對路徑進行引入的,如果GOPATH存在多個,那么go將逐一尋找路徑,直到找到,若GOPATH/src未找到則編譯出錯。
示例:
我的GOPATH為:C:\Users\17647\Desktop\go_work\src
首先建立包文件1:C:\Users\17647\Desktop\go_work\src\day02\eg1\pkg.go(相對於GOPATH/src的路徑為day02\eg1\pkg.go)
內容如下:
package add import "fmt" func Sum(a int,b int) { var c int c = a + b fmt.Println("res",c) }
在main進行引入如下:
package main import ( "fmt" "day02/eg1" /* 引入包 */ ) func main() { add.Sum(2,3) /* 調用包 */ fmt.Println("Hello, World!") }
圖示:
二、變量 |
1.單個變量的聲明
go語言中,所有變量都必須先聲明在使用,下面是聲明變量和賦值方法:
- 先聲明后賦值: var <變量名稱> <變量類型> 賦值:變量的賦值格式: <變量名稱> = <表達式>
- 聲明的同時賦值:var <變量名稱> <變量類型> = <表達式> (簡寫為 變量名稱 := 表達式)
示例:
package main import "fmt" func main() { var a string /* 聲明一個變量名為a,類型為字符串的變量 */ a = "wd" /* 對a變量賦值*/ var age int = 22 /* 聲明並賦值變量 */ fmt.Println(a,age) }
2.多個變量聲明
- 先聲明后賦值:var <變量1>,<變量2>,<變量3> <變量類型> 賦值 : <變量1>,<變量2> = 值1,值2
- 聲明同時賦值 :var <變量1>,<變量2> = 值1,值2 可簡寫為: <變量1>,<變量2> = 值1,值2
- 多個變量還可以使用var()聲明
示例:
package main import "fmt" func main() { var a,b int a,b = 1,2 var c,d = 3,"wd" /* 類型自動推斷 */ e, f := 4, "hello" /* 簡寫 */ fmt.Println(a,b,c,d,e,f) }
使用var()聲明
package main import "fmt" func main() { var ( a int //默認值為0 b string // 默認值為空字符串("") c = 3 ) fmt.Println(a,b,c) }
3.變量名
命名原則:
- 首字符可以是任意的Unicode字符或者下划線
- 剩余字符可以是Unicode字符、下划線、數字
- 不能作為用以下關鍵字作為變量名
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
4.可見性
可見性即對包外可見,當其他包調用當前包的變量時候是否允許可見(可訪問)。
- 變量開頭字符大寫,表示可見
- 變量開頭字母非大寫,則表示私有,不可見
5.變量的作用域
- 函數內定義的變量稱為局部變量,其作用域在函數內
- 函數外定義的變量稱為全局變量,作用於整個包,並且該變量首字母大寫,則對其他包可見。
三、常量 |
常量是一個簡單值的標識符,在程序運行時,不會被修改的量。
常量中的數據類型只可以是布爾型、數字型(整數型、浮點型和復數)和字符串型。
定義常量語法:
const 名稱 類型 = value
多個常量定義語法:
const ( a = 0 //類型自動推倒 b = 1 c = 2 )
iota解釋:
iota,特殊常量,可以認為是一個可以被編譯器修改的常量。
在每一個const關鍵字出現時,被重置為0,然后再下一個const出現之前,每出現一次iota,其所代表的數字會自動增加1。
iota 可以被用作枚舉值:
const ( a = iota b = iota c = iota )
第一個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:
const ( a = iota b c )
用法:
package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //獨立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢復計數 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }