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

科工人 等级 668 0 0
标签:

最近把我的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
收藏
评论区

相关推荐

为什么GOPROXY对Golang开发如此重要
为什么GOPROXY对Golang开发如此重要 引言 从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。 但是对于其他的GOPROXY选项,比如JFrog GoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能
我的golang基础
库查询 https://gowalker.org/你应该$HOME/.profile文件增加下面设置。 搭建go的环境 step1:去golang的官网下载go的安装包 windows:go1.9.2.....msi mac:go1.9.2......pkg 双击傻瓜式安装 linux:go1.9.2.linuxamd64.tar.gz 默认到下
go的三个运行基本命令的区别,go run ,go build 和 go install
最近在自学go,遇到点基础的问题,通过自己实际操作之后得出结论在实际操作之前,我们需要知道go有三种源码文件:      1,命令源码文件;声明自己属于main包,并且包含main函数的文件,每个项目只能有一个这样的文件,即程序的入口文件      2,库源码文件;不能直接被执行的源码文件      3,测试源码文件本次操作不涉及测试源码文件。go run
go run main.go undefined? golang main包那点事
最近把我的ss项目做了一下结构调整,一顿重构后,输入go run main.go,编译报错function undefined。额,怎么回事明明把函数定义在main.go上面的文件中啊。之前也遇到过这个问题不过没用深究,下面我们来说说go main包那点事。golang main包推荐只有一个main.go文件,这样大家就能按照习惯的方式,`go run m
Go 1.11 的go.mod
A module version is defined by a tree of source files, with a go.mod file in its root. When the go command is run, it looks in the current directory and then successive parent dire
Go 包的原理和使用
> ### Go 包的原理和使用 > > * **包的引出** > * 在实际的开发中,我们往往需要在不同的文件中,去调用其它文件的定义的函数,比如 main.go中,去使用 utils.go 文件中的函数,如何实现? --> 包 > * 现在有两个程序员共同开发一个 Go 项目。程序员 xiaoming 希望定义函数 Cal
Go 语言编程 — go mod 依赖包管理
目录 == ### 文章目录 * 目录 * go mod 依赖包管理 * 使用 go mod go mod 依赖包管理 ============ go mod 是 Golang 1.11 版本引入的依赖包管理工具。其中,Golang 对 Modules 的定义:Modules 是相关 Go Packages 的集合,是源代码交换和版本控制
go mod 无法自动下载依赖包的问题
go 11以后启用了go mod功能,用于管理依赖包。 当执行`go mod init`生成`go.mod`文件之后,golang在`运行`、`编译`项目的时候,都会检查依赖并下载依赖包。 在启动了`go mod`之后,通过`go mod`下载的依赖包,不在放在`GOPATH/src`中,而是放到`GOPATH/pkg/mod`中。 比如我当前的`GO
go 编写DLL
package mian import "C" //export Min func Min(a,b) int32{ if a>b{ return int32(b) } return int32(a) }   编译命令      
go笔记(go中的方法调用)
最近接触go语言  发现和java的方法调用有些类似但又有自己的注意点 go的包我理解为则是隔离的最小模块 先在src目录下创建main.go文件  package为main,然后在src下创建module1目录 ,在module1目录下创建两个文件packageStrut.go,packageStrut2.go    package均为module1
Archlinux下Visual Studio Code配置Golang开发环境
一、Golang的安装 ----------- GoLang安装并验证一下: [cox@localhost ~]$ sudo pacman -S go [cox@localhost ~]$ go version go version go1.8.3 linux/amd64s 要注意,Golang的安装要确保两个环境变量,一个是G
Golang 开发环境搭建
Golang 是 Google 发布的开发语言,Go 编译的程序速度可以媲美 C/C++。 安装 -- sudo apt-get install golang sudo apt-get install golang-go.tools 使用 -- * 编译运行程序 go run main.go * 查看命令文
Golang之匿名函数和闭包
Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下: main.go ![复制代码](https://oscimg.oschina.net/oscnet/cf4405f1d31ed55912b22f881ff1e165bba.gif) package main import ( "fm
Golang自定义包总结
近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。 我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是**文件夹的名称**,和自定义包的package的名称或者自定义包里面的文件名称**没有关系**,例如文件的结构目录如下: ![输入图片说明](https://static.
InfluxDB服务器启动流程
操作系统 : CentOS7.3.1611\_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 源码路径: github.com/influxdata/influxdb/cmd/influxd 程序入口(main.go): func main() { rand.Seed(time.N