go run main.go undefined? golang main包那点事

科工人
• 阅读 1938

最近把我的ss项目做了一下结构调整,一顿重构后,输入go run main.go,编译报错function undefined。额,怎么回事明明把函数定义在main.go上面的文件中啊。之前也遇到过这个问题不过没用深究,下面我们来说说go main包那点事。

golang main包推荐只有一个main.go文件,这样大家就能按照习惯的方式,go run main.go 或 go build main.go来运行编译项目。

如果main包下有多个go文件,应该使用go run a.go b.go c.go 或 go run *.go来运行,编译同理。

因为mian包里,使用go run main.go,编译器只会加载main.go这个文件,不会加载main包里的其他文件,只有非main包里的文件才会通过依赖去自动加载。所以你需要输入多个文件作为参数。

golang推荐项目结构:

.
├── .gitignore
├── README.md
├── main.go
└── src
    ├── pkg1
    │   └── a.go
    ├── pkg2
    │   └── b.go
    └── pkg3
        └── c.go

如果需要编译为多个程序,可以加入cmd文件夹:

.
├── .gitignore
├── README.md
├── cmd
│   ├── cmd1
│   │   └── main.go
│   └── cmd2
│       └── main.go
└── src
    ├── pkg1
    │   └── a.go
    ├── pkg2
    │   └── b.go
    └── pkg3
        └── c.go
点赞
收藏
评论区
推荐文章
科工人 科工人
3年前
go的三个运行基本命令的区别,go run ,go build 和 go install
最近在自学go,遇到点基础的问题,通过自己实际操作之后得出结论在实际操作之前,我们需要知道go有三种源码文件:   1,命令源码文件;声明自己属于main包,并且包含main函数的文件,每个项目只能有一个这样的文件,即程序的入口文件   2,库源码文件;不能直接被执行的源码文件   3,测试源码文件本次操作不涉及测试源码文件。gorun
Wesley13 Wesley13
3年前
Go项目的目录结构
项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性1、一般的,一个Go项目在GOPATH下,会有如下三个目录:|bin|pkg|src其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项
Wesley13 Wesley13
3年前
go mod 无法自动下载依赖包的问题
go11以后启用了gomod功能,用于管理依赖包。当执行gomodinit生成go.mod文件之后,golang在运行、编译项目的时候,都会检查依赖并下载依赖包。在启动了gomod之后,通过gomod下载的依赖包,不在放在GOPATH/src中,而是放到GOPATH/pkg/mod中。比如我当前的GO
Wesley13 Wesley13
3年前
go笔记(go中的方法调用)
最近接触go语言 发现和java的方法调用有些类似但又有自己的注意点go的包我理解为则是隔离的最小模块先在src目录下创建main.go文件 package为main,然后在src下创建module1目录,在module1目录下创建两个文件packageStrut.go,packageStrut2.go  package均为module1
Wesley13 Wesley13
3年前
go程序执行顺序(转)
在一个go程序中通常包含:包、常量、变量、init()、main()等元素,如果同时存在多个包,包之间存在依赖关系,每个包中存在多个init函数,每个文件中存在多个init函数,那么问题来了,他们之间的执行顺序是什么样的?通过本文我们来对它们之间的执行顺序做尽可能详尽的说明。如有不正之处,欢迎批评指正。包的执行顺序在ma
Wesley13 Wesley13
3年前
Go 包的原理和使用
Go包的原理和使用包的引出在实际的开发中,我们往往需要在不同的文件中,去调用其它文件的定义的函数,比如main.go中,去使用utils.go文件中的函数,如何实现?包现在有两个程序员共同开发一个Go项目。程序员xiaoming希望定义函数Cal
Stella981 Stella981
3年前
Python输出hello world(各行命令详解)
创建main.py文件并粘贴下面代码点击右键运行Debug'main'后,下方的Debug窗口会出现ImportError:Nomodulenamed'bottle'这样的提示,提示导入bottle包出错所以我们需要先安装这两个包,cmd,输入pipinstallbottle回车后开始安装bottle包Mac权限不够补上
Stella981 Stella981
3年前
Golang自定义包总结
近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是文件夹的名称,和自定义包的package的名称或者自定义包里面的文件名称没有关系,例如文件的结构目录如下:!输入图片说明(https://static.
小万哥 小万哥
1年前
Go 语法
一个Go文件包含以下几个部分:包声明导入包函数语句和表达式看下面的代码,更好地理解它:例子Gopackagemainimport"fmt"funcmain()fmt.Println("HelloWorld!")例子解释第1行:在Go中,每个程序都是一个包的
小万哥 小万哥
11个月前
Go 语言基础:包、函数、语句和注释解析
一个Go文件包含以下几个部分:包声明导入包函数语句和表达式看下面的代码,更好地理解它:例子gopackagemainimport"fmt"funcmain()fmt.Println("HelloWorld!")例子解释第1行:在Go中,每个程序都是一个包的