问一下 golang 导包为什么会失败?

2020-08-07 17:03:29 +08:00
 chenqh

文件结构

/home/vagrant/gocode/gtail
├── go.mod
├── go.sum
├── log_watcher.go
├── main.go
└── playbooks
    ├── file_watcher
    │   └── compile.json
    └── session.yaml

log_watcher 的内容

package log_watcher

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
)

type LogWatcher struct {
	Pattern string
}

func (c *LogWatcher) tail() {
	matches, err := filepath.Glob(c.Pattern)
	if err != nil {
		log.Fatal(err)
		return
	}
	for k, v := range matches {
		file_obj, err := os.Open(v)
		if err != nil {
			log.Fatal(err)
			return
		}
		go func() {
			buf := make([]byte, 1024)
			for {
				n, _ := file_obj.Read(buf)
				if 0 == n {
					break
				}
				fmt.Print(buf[:n])
			}
		}()
	}

	return
}

main.go 的内容

package main

import (
	"fmt"
	"log"
	"os"

	"github.com/urfave/cli"
	"gtail/log_watcher"
)

func main() {
	var pattern string
	app := &cli.App{
		Name:  "gtail",
		Usage: "golang tail",
		Flags: []cli.Flag{
			&cli.StringFlag{
				Name:        "pattern",
				Usage:       "language for the greeting",
				Required:    true,
				Destination: &pattern,
			},
		},
		Action: func(c *cli.Context) error {
			if len(pattern) == 0 {
				fmt.Printf("miss pattern\n")
				return nil
			}

			var log_watcher = &LogWatcher{
				Pattern: pattern,
			}
			log_watcher.tail()

		},
	}

	err := app.Run(os.Args)
	if err != nil {
		log.Fatal(err)
	}
}

为什么 build 的时候提示

can't load package: package gtail: found packages log_watcher (log_watcher.go) and main (main.go) in /home/vagrant/gocode/gtail

我另一个项目这么导包又成功了,感觉 golang 的导包真的玄学,

1838 次点击
所在节点    Go 编程语言
6 条回复
warlock
2020-08-07 17:06:07 +08:00
同一个目录下 包名要相同
chenqh
2020-08-07 17:07:44 +08:00
@warlock 这个原因?草
useben
2020-08-07 17:48:47 +08:00
你用记事本写的?
raaaaaar
2020-08-07 18:21:57 +08:00
gomod 不是很好用么。
chenqh
2020-08-07 20:39:46 +08:00
@useben 用的 vscode.
chenqh
2020-08-07 21:15:33 +08:00
md, golang 版的内存比 python 还高, 我也是醉了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX