[Go] Golang 相對路徑以及沒有使用gofmt的衍生問題


今天遇到一個奇特的問題

在我將專案內import 的相對路徑改成絕對路徑的時候,竟然出現了一些不知道從哪裡來的物件名稱。

想當然爾,編譯是不會過關的,但前人的編譯確可以順利通過。


肇事原因,就是前人的兩個做法所影響

1. 用相對路徑去import package
2. 沒有用gofmt


情境如下:


"../../kernel/api"

這個其實是幫你找到一個叫做『api 』的資料夾位置

如果我在『api 』這個資料放的package 名稱叫做myservice

這樣是可以過關的,而且你在import "../../kernel/api"的檔案內

可以用 myservice.XXXX ,這個package內的東西!


(原則上package的命名和外面的資料夾名稱應該一樣,這個是不好示範)


目錄如下

    kernel - 
        api -
            send_request.go


send_request.go 檔案內容

    package myservice 

    func begin(){
    // todo function implement
    }



某個有使用send_request.go檔案的內容

    package logic

    import  "../../kernel/api"

    func buildLogic() {
        myservice.begin()
    }



我看到就是類似myservice.的東西,滿臉的問號它是從哪打來的?



會有這樣的結果,也是因為沒用gofmt

如果有用gofmt,看到未使用的"../../kernel/api"早就被砍掉了,因為裡面沒有地方是用api開頭。

挖屋.....


當然可以的話,還是希望大家都能用絕對路經(專案名稱開頭),和gofmt輔助格式整理。


Created Date : 2018/09/28


Last Updated Date : 2018/09/28





留言

這個網誌中的熱門文章

[Go] 型態轉換 type convert

[Go] Golang用法 package import 前面的底線

[Go] 指標 pointer with golang