Go語言:引用私有包報錯“named files must all be in one directory”

"named files must all be in one directory" 這個報錯實際上是項目私有包(package)的文件組織與引用的問題。示例如下:

$GOPATH/src/hd-backend/
                     ├── go.mod
                     ├── go.sum
                     ├── httptest.go
                     ├── httputils
                     │   └── http_utils.go
                     

 httptest.go

package main

import (
	"fmt"
	"hd-backend/httputils"
)

func main() {
	resp, err := httputils.Get("http://127.0.0.1:9527/stat")
	if err != nil {
		fmt.Printf("%v\n", err)
		return
	}
	fmt.Printf("%s\n", resp)
}

./httputils/http_utils.go

package httputils

import(
	"net/http"
	"io/ioutil"
)
func Get(urlstr string)(string, error){
	resp, err := http.Get(urlstr)
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return "", err
	}
	return string(body), nil
}

運行報錯:

[root@dev hd-backend]# go run httptest.go ./httputils/http_utils.go
named files must all be in one directory; have ./ and ./httputils/

go run命令後面後面所有*.go文件都必須在項目的根目錄下,不能有子目錄。正確的運行命令如下:

[root@dev hd-backend]# go run httptest.go

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章