要學一下GO了,工作中要用到。
第一步我不怎麼關心語法啊什麼的,我而是關心一個GO工程的目錄結構是怎麼樣的。通過學習這篇文章《理解Golang包導入》,我大體初步瞭解了一個Go工程的基本結構。
以下在windows下使用LiteIDE進行Go的開發與測試
目錄結構:
G:\Go_project\pkgtest\
----------------------pkg\
----------------------src\
-------------------------app1\
------------------------------main.go
-------------------------libproj1\
----------------------------------foo\
-------------------------------------foo1.go
主要的測試文件還是在src目錄下一.main使用系統提供的的包
package main
import (
"fmt"
)
func main() {
fmt.Println("it works")
}
很簡單,既然是系統提供的,就是這麼直接的一個import ("fmt")就可以了,代碼就能正常工作了
二.main使用libprog1下用戶自定義的包
foo目錄下fool.go的內容爲
package foo
import "fmt"
func Fool() {
fmt.Println("Fool")
}
app1目錄下main.go內容爲
package main
import (
"libproj1/foo"
)
func main() {
foo.Fool()
}
在LiteIDE下執行ctrl+R後,提示不能編譯,查了原因是沒有配置GOPATH,那進行一下GOPATH的配置:
再執行以下ctrl+R,可以運行了
三.main使用libprog1下用戶自定義的包,包名和包含包的目錄不同名
foo目錄下fool.go內容爲
package author //包的名字是author,和上面的例子不同
import "fmt"
func Fool() {
fmt.Println("Fool")
}
app1目錄下main.go內容爲
package main
import (
"libproj1/foo" //import的路徑還是一樣的
)
func main() {
author.Fool() //引用的包的名字卻要改變一下下了
}
ctrl+R後,依然可以正常工作
四.main使用libprog1下用戶自定義的包,包名和包含包的目錄不同名,main給第三方包起個名字再用
foo目錄下fool.go內容和上面的一樣
app1目錄下main.go內容爲
package main
import (
other "libproj1/foo" //爲指定目錄下的那個包author起個名字叫other
)
func main() {
other.Fool() //直接用other
}
ctrl+R後可以工作
五.在上面的例子的基礎上,在libprog1下新建同名包的文件fool2.go
G:\Go_project\pkgtest\
----------------------pkg\
----------------------src\
-------------------------app1\
------------------------------main.go
-------------------------libproj1\
----------------------------------foo\
-------------------------------------foo1.go
-------------------------------------foo12.go
fool2.go的文件內容爲
package author
import "fmt"
func Fool2() {
fmt.Println("Fool2")
}
app1目錄下main.go內容爲
package main
import (
other "libproj1/foo"
)
func main() {
other.Fool()
other.Fool2()
}
ctrl+R後,可以工作
六.在上面的例子的基礎上,在libprog1下新建不同名包的文件fool2.go,main依然使用別名other
fool2.go文件內容爲
package author2
import "fmt"
func Fool2() {
fmt.Println("Fool2")
}
ctrl+R,這下報錯了,無法編譯
七.在上面的例子的基礎上,在libprog1下新建不同名包的文件fool2.go,main使用fool.go,fool2.go中自己的包名
main.go內容爲
package main
import (
"libproj1/foo"
)
func main() {
author.Fool()
author2.Fool2()
}
ctrl+R,依然報錯
總結:
1.用戶要定義自己的包然後使用的話,需要配置GOPATH
2.一個包下面,所有的go文件申明的包名應該是同一個
3.main在import包的時候,import的是包的路徑
4.main在使用包的時候,使用的是包名
5.因爲一個包下面的包名是唯一的,所以import的時候可以給它起個別名