關於包檔案,更多的是概念性的,操作上會比較簡單,使用地多了,就熟能生巧了,理論性大概讀幾遍即可,不要浪費太多時間在包管理這裡!1、我們不可能把所有的函式都放在同乙個原始檔中,可以分門別類的把函式放在不同的原始檔中將定義工具類操作的函式放入包的概念很簡單,就好像我們新建go檔案的資料夾一樣。在其他語言也有涉及,例如世界上最好的語言php中的檔案包含。
utils.go
這個檔案中,將對資料庫操作的函式放入db.go
檔案中。main.go
呼叫這兩個檔案中的函式時,需要匯入對應的檔案中的函式。
2、解決同名問題:
程式設計師有時候要用到幾個功能差不多的函式,為了見名知意,起的名字基本上都是一樣的。所以這種重名的函式是很常見的。
將新建的go目錄,配成gopath
這樣呼叫的時候,就可以直接調過去了。
目錄結構
main.go
package main // 1、package是進行包的宣告,建議宣告的包與所在資料夾同名
//main包是程式的入口包,一般main函式會放在這個包下
import (
"fmt"
"study/studygo/day07/package/demo01/project_test/dbutils"
)func main()
dbutils.gopackage dbutils
import "fmt"
func dbconnect()
1、包中的識別符號(變數名/函式名/結構體/介面等)如果首字母是小寫的,表示私有(只能在當前這個包中使用)
2、首字母大寫的識別符號,對外部的包可見,可被呼叫
3、正如fmt.println
,println
永遠第乙個是大寫字母,就是因為呼叫fmt
包中的println
如果引入乙個包的時候為其設定了乙個特殊_
作為包名,那麼這個包的引入方式就稱為匿名引入。乙個包被匿名引入的目的主要是為了載入這個包,從而使得這個包中的資源得以初始化。 被匿名引入的包中的init
函式將被執行並且僅執行一遍。匯入這個包沒有引入任何的方法
import _ "github.com/go-sql-driver/mysql"
匿名引入的包與其他方式匯入的包一樣都會被編譯到可執行檔案中。
需要注意的是,go語言中不允許引入包卻不在**中使用這個包的內容,如果引入了未使用的包則會觸發編譯錯誤。
1、package進行包的宣告,建議:包的宣告這個包和所在的資料夾名字一致
2、main包是程式的入口包,一般main函式會放在這個包下。否則不能編譯執行。
3、打包語法:package 包名
4、引入包語法:import "包的路徑"。包的路徑是從$gopath/src/後開始計算的,使用/進行路徑分割。(外掛程式與功能配置可以實現)
5、如果有多個包,建議一次性匯入(外掛程式與功能配置可以實現)
import (
"fmt"
"gocode/testproject01/unit5/demo09/crm/dbutils" //一定要注意gocode前沒有 /
)
6、在函式呼叫的時候前面要定位到所在的包
7、首字母大寫,函式可以被其它包訪問
8、乙個目錄下不能有重複的函式
9、包名和資料夾的名字,可以不一樣
10、乙個目錄下的同級檔案歸屬乙個包,即同目錄下的原始檔的包的宣告必須一致!
11、包到底是什麼:
12、可以給包取乙個別名,但是原來的包名就不能用了
13、go語言禁止迴圈匯入包,什麼意思?就是a匯入b,b匯入c,c匯入d,d匯入a。這就是乙個環,禁止!
1、每次引入,都只能在src
目錄下引入,會比較麻煩。假設別人用了另乙個版本的go,一旦修改,你如何引入以及使用呢?
3、到後面,會學習一種方式,即go mod
,一種新的包管理方式,會更加方便快捷。
還記得之前學的init函式吧,這裡算是複習一遍
Go語言學習筆記 閉包
首先這裡的func int int是指函式test 返回乙個函式 類似的,返回多個值是這樣寫 func a int,int,float32 func test func int int func main 書中對閉包的解釋 閉包的概念 是可以包含自由 未繫結到特定物件 變數的 塊,這些變數不在這個 ...
go語言學習 go語言原始碼檔案
二 庫原始碼檔案 三 總結 原始碼檔案分為三種,即 命令原始碼檔案 庫原始碼檔案和測試原始碼檔案。命令原始碼檔案 庫原始碼檔案 測試原始碼檔案 1.1命令原始碼檔案介紹 package main import flag包用於接收和解析命令引數 flag fmt包含有格式化i o函式 fmt var ...
GO語言學習
sudo apt get install golang但是用ubuntu的庫安裝有幾個不好的地方 因此建議不要使用ubuntu的庫安裝golang環境 golang社群的安裝指導 wget tar c usr local zxf go1.6.2.linux amd64.tar.gz設定環境變數,修改...