一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言
溫故知新
- 同一文件夾下的所有.go文件的package 必須一樣.不一定和文件夾名相同
- 文件夾下可以有子文件夾,體現(xiàn)了package直接的上下級(jí)關(guān)系
- import 導(dǎo)入的路徑是從src 子目錄,到該包的實(shí)際存儲(chǔ)位置的相對(duì)路徑
多個(gè)工作區(qū)
- 意義?
- 定義方法
export GOPATH="/home/ferghs/gowork:/home/ferghs/gowork/src/project1"
- go get 默認(rèn)是下載到第一個(gè)workspace
- 依賴關(guān)系
從第一個(gè)到最后一個(gè)按順序?qū)ふ?/li>
模塊私有訪問權(quán)限 internal
- internal代碼包中聲明的公開程序?qū)嶓w僅能被該代碼包的直接父包及其子包中的代碼引用
import 另外一個(gè)用法
import . "packagename"
那么就會(huì)讓這個(gè)“XXX”包中公開的程序?qū)嶓w被當(dāng)前源碼文件中的代碼,視為當(dāng)前代碼包中的程序?qū)嶓w
{} 含義
- 空的代碼塊
- 表示不包含任何內(nèi)容的數(shù)據(jù)結(jié)構(gòu)(或者說數(shù)據(jù)類型)
1.1 interface{} 不包含任何方法定義的、空的接口類型
1.2 struct{} 代表了不包含任何字段和方法的、空的結(jié)構(gòu)體類型 - 表示其值不包含任何元素
比如空的切片值[]string{},以及空的字典值map[int]string{}
類型別名與類型聲明的區(qū)別
type D = int // 類型別名
type I int // 類型聲明
類型別名和原類型完全一樣,只不過是另一種叫法而已,而類型定義和原類型是不同的兩個(gè)類型
package main
import "fmt"
type D = int
type I int
func main() {
v := 100
var d D = v // 不報(bào)錯(cuò)
var i I = v // 報(bào)錯(cuò)
fmt.Println(d)
fmt.Println(i)
}