فهرست منبع

更新 '_posts/go-2.md'

aaronwei 5 سال پیش
والد
کامیت
f389a35864
1فایلهای تغییر یافته به همراه55 افزوده شده و 56 حذف شده
  1. 55 56
      _posts/go-2.md

+ 55 - 56
_posts/go-2.md

@@ -23,15 +23,15 @@ export GOBIN=$GOROOT/bin
 以下 `GOPATH` 的结构如下:
 
 ```
-├── src
-    └── github.com
-        └── hunterhug
-            └── rabbit
-                └── a
-                    └── a.go
-                └── main.go
-├── bin
-├── pkg
+├── src
+    └── github.com
+        └── hunterhug
+            └── rabbit
+                └── a
+                    └── a.go
+                └── main.go
+├── bin
+├── pkg 
 ```
 
 我们写的开发包有简单易懂的路径之分,比如我的包叫 `github/hunterhug/rabbit`,那么结构如上面一样。
@@ -87,11 +87,11 @@ func main(){
 你再看下 `GOROOT` 的结构:
 
 ```
-├── src
-    └── time
-    └── fmt
-├── bin
-├── pkg
+├── src
+    └── time
+    └── fmt
+├── bin
+├── pkg 
 ```
 
 这不和我们的 `GOPATH` 很像吗,对,现在的 `Golang编译器` 是自编译的,就是用 `Golang` 来写 `Golang编译器`,它的编译器及中间产物,基础库等,保持和 `GOPATH` 一毛一样,无缝衔接。
@@ -107,13 +107,13 @@ func main(){
 比如我们的包叫 `awesomeProject`,在 `GOPATH` 下结构:
 
 ```
-├── src
-    └── awesomeProject
-        └── vendor
-            └── fmt
-                └── fmt.go
-        └── main.go
-├── pkg
+├── src
+    └── awesomeProject
+        └── vendor
+            └── fmt
+                └── fmt.go
+        └── main.go
+├── pkg 
 ```
 
 其中 `main.go`:
@@ -170,8 +170,8 @@ main.go:4:2: cannot find package "b" in any of:
 好了,我们发现现在的加载方式是:
 
 ```
-包同目录下的vendor
-GOPATH src 下的vendor
+包同目录下的vendor
+GOPATH src 下的vendor
 GOROOT src
 GOPATH src
 ```
@@ -181,13 +181,13 @@ GOPATH src
 好了,现在问题就是 `vendor` 是怎么冒泡的,如果我 `main.go` 引用了 `vendor/b`,而 `b` 包里面引用了一个 `c` 包。此时 `vendor/b` 会怎么找库?
 
 ```
-├── src
-    └── awesomeProject
-        └── vendor
-            └── b
-                └── b.go
-        └── main.go
-├── pkg
+├── src
+    └── awesomeProject
+        └── vendor
+            └── b
+                └── b.go
+        └── main.go
+├── pkg 
 ```
 
 现在 `vendor/b/b.go` 的内容:
@@ -216,8 +216,8 @@ vendor/b/b.go:3:8: cannot find package "c" in any of:
 现在加载流程是:
 
 ```
-包同目录的包(即b包同目录看看有没有c包)
-GOPATH src 下的vendor
+包同目录的包(即b包同目录看看有没有c包)
+GOPATH src 下的vendor
 GOROOT src
 GOPATH src
 ```
@@ -225,14 +225,14 @@ GOPATH src
 此时我们在 `vendor/b` 下建一个空 `vendor`:
 
 ```
-├── src
-    └── awesomeProject
-        └── vendor
-            └── b
-                └── vendor
-                └── b.go
-        └── main.go
-├── pkg
+├── src
+    └── awesomeProject
+        └── vendor
+            └── b
+                └── vendor
+                └── b.go
+        └── main.go
+├── pkg 
 ```
 
 进入 `awesomeProject` 项目再 `go build` 会出现:
@@ -249,17 +249,17 @@ vendor/b/b.go:3:8: cannot find package "c" in any of:
 如果我们再满足上面的 `c` 包,同理在 `c` 包建一个空 `vendor` :
 
 ```
-├── src
-    └── awesomeProject
-        └── vendor
-            └── b
-                └── vendor
-                    └── c
-                        └── vendor
-                        └── c.go
-                └── b.go
-        └── main.go
-├── pkg
+├── src
+    └── awesomeProject
+        └── vendor
+            └── b
+                └── vendor
+                    └── c
+                        └── vendor
+                        └── c.go
+                └── b.go
+        └── main.go
+├── pkg 
 ```
 
 但 `c` 包 `c.go` 引用了不存在的 `d` 包:
@@ -292,11 +292,10 @@ vendor/b/vendor/c/c.go:3:8: cannot find package "d" in any of:
 所以现在的加载流程是:
 
 ```
-包同目录下的vendor
-包目录向上的最近的一个vendor
+包同目录下的vendor
+包目录向上的最近的一个vendor
 ...
-
-GOPATH src 下的vendor
+GOPATH src 下的vendor
 GOROOT src
 GOPATH src
 ```
@@ -391,7 +390,7 @@ build github.com/hunterhug/hello: cannot load c: open /home/love/awesomeProject/
 现在我们来正确使用 `go mod`, 一般情况下:
 
 ```
-省略N步
+省略N步
 ```
 
 到了这里,我们很遗憾的说再见了,现在 `go mod` 刚出来, 可能还会再更新,您可以谷歌或者其他方式搜索这方面的文章,或者: