gorun

执行运行 Go 源码
授权协议 GPLv3
开发语言 Google Go
所属分类 应用工具、 操作系统工具
软件类型 开源软件
地区 不详
投 递 者 叶德本
操作系统 Linux
开源组织
适用人群 未知
 软件概览

gorun 是以脚本形式执行go程序代码的工具。

例如一个 go 的源文件:

#!/usr/bin/gorun

package main

func main() {
    println("Hello world!")
}

执行方法:

$ chmod +x hello.go
$ ./hello.go
Hello world!
  • 一 前言 当完成一个应用的开发以后,往往下一步就是进行源码的编译。如 c 语言 gcc 编译一样,Go 在编译后只有一个二进制的文件,所以可以放到任何可支持的机器部署运行。简直就是“拎包入住”,爽的不要不要的。 在 Go 中和编译有关的命令有三个,它们分别是 go run、go build 和 go install。他们有着相似之处,也有着特殊之处。 二 go run 命令格式:go run [可

  • Go build 和go run 的区别 Go build go build 用来启动编译,可以将Go语言程序与相关依赖编译成一个可执行文件,在使用go build编译时,不同的参数执行的结果也不相同 当参数为空时: 如果当前目录下存在main包,则会生成一个与当前目录名同名的可执行文件; 如果不存在main包,则只对当前目录下的程序源码进行语法检查,不生成可执行文件 当参数不为空时: 如果参数为

  • 一:go run 命令介绍 功能:用于编译main代码包,以及运行编译后的可执行程序。 go run 只可以在main包目录下执行,后面可以跟1个至多个.go 源文件,但其中必须有1个命令源码文件;官方文档还说了其后可以跟一个目录(命令源码文件所在的目录) 因为 go run 过程是可以带有编译过程的,所以 go build 的所有命令都试用于 go run 命令。 go run 命令编译后的结果

  • 遇到的问题 go build完项目后,在使用绝对路径启动时,发现 报错:open ./config/my.ini: no such file or directory 报错代码如下: conf, err := ini.Load("./config/my.ini") if err != nil { log.Fatal("配置文件读取失败, err = ", err) } 我们通过分析以及查询

  • 问题现象: 同一个文件夹下面有多个go文件,a.go,b.go,c.go,其中main在a.go中,直接go run a.go,报undefined 错误 原因: go在run之前会先进行编译操作,而在此处的编译它只会以这个a.go为准,导致其他几个引用文件中的方法出现找不到的情况 (而采用go build的方式又不一样,他会自动查找引用文件并打包) 解决方法: go run a.go b.g

  • 0x01 问题 一次同事反馈在环境中,执行go run xx.go时出现如下异常提示。 fork/exec /tmp/go-build104992250/b001/exe/h: permission denied 有点兴趣,所以就动手查了下。查的过程比较简单,但思路有点意思。希望会有所帮助启发。 0x02 分析 出现这个问题,原因是go在/tmp目录下生成的可执行文件没有执行权限,当Go去执行时

  • 使用 go run [fileName].go 用于执行go的源代码 如go run helloworld.go go run [fileName].go -p [argu] 带参数[argu]执行go的源代码 go run常用标记 -a:强制编译相关代码,无论是否编译过 -v:列出被编译的代码包的名称 -a -v:列出所有被编译的代码包的名称 -p n:并行编译,其中n为并行的数量 如-p 2

  • 用于运行命令源码文件 只能接受一个命令源码文件以及若干个库源码文件作为文件参数. 设置 GOPATH 添加goc2p为工作目录 go run 常用的标记的使用 -a:强制编译相关代码,不论它们的编译结果是否已是最新的 -n:打印编译过程中所需运行的命令,但不真正执行它们 -p n:并行编译,其中n为并行的数量 n为cpu逻辑个数 -v:列出被编译的代码包的名称 -a -v:列出所有被编译的代码包的

  • go run其实是执行一个exe文件(window),go build 入口是一个main包,有main包才能生产exe文件,一个mian包里只能有一个唯一的main方法, 同一个包里的方法可以互相调用,除了main包之外,其他包不能调用main包里的方法,但main包可以调用其他包的方法 调用包的时候,包是按照文件夹区分的,调用包的时候如果包里还有main包,就会默认调用main包里的内容,当m

  • 出现问题的场景 在本机(Windows系统)上生成一个可执行的二进制文件,然后上传到服务器上(Linux系统)上运行,就会出现ggo run: no go files listed的问题。 另外一种问题也是相似的场景:在使用Compose构建镜像时,COPY的是在Linux(架构是amd64)上生成的可执行文件,所以在以alpine为基础镜像,不进行其他设置而运行二进制文件的时候,就会出现/bin

  • 问题描述 go run .\main.go go: finding gitlab.xxx.cn/xxx/xxx v1.3.9 go: gitlab.xxx.cn/xxx/xxx@v1.3.9: unknown revision v1.3.9 内部gitlab上 发现go mod无法拉取模块 一开始提示是unknown revision, 但是发现也不是版本问题 执行基本的git clone发现也

  • 异常信息 go run: cannot run non-main package 异常原因 在Go语言中, 只有package为main时才能执行main方法 package main import "fmt" func main() { fmt.Println("main") } 如果是要做测试的话建议使用专业的测试类来测试 package test import ( "testi

  • 在学习过程中,搭建了下webserver,发现教程没有提供关闭办法 第一种:先查看端口占用情况,然后kill -9 比如监控的是8000端口 lsof -i:8000 #或加个tcp查找tcp服务 lsof -i tcp:8080 #找到对应的端口后kill掉 kill -9 900 第二种: killall 程序名称 第三种:使用supervisor管理 其他方法参考: https://se

  • go run时报错: package test1/pkg is not in GOROOT   原因:   go.mod 中的module不匹配,因为项目名冲突我把项目名从test改成了test1,但go.mod文件中的module没有对应改成test1,所以导致了包找不到。     解决:   把go.mod文件中的module修改成test1,然后go mod tidy后重新运行。

  • go run XXX.go param1 param2 param3 命令行参数是param1、param2、param3 或者 go build XXX.go 再运行.exe文件 XXX param1 param2 param3 命令行参数是param1、param2、param3

  • 在windows下面执行 go run 每次超级慢 后面查询得知 为360的原因 关闭360 就很快了…

  • ERROR:go run: cannot run *_test.go files 比如执行:go run xxx_test.go报如上错误。 *_test.go是golang特有的约定,为测试文件。 修改文件名,将_test去掉

 相关资料
  • 在上面的例子中,我们演示了一下如何去触发执行一个外部的进程。我们这样做的原因是我们希望从Go进程里面可以访问外部进程的信息。但有的时候,我们仅仅希望执行一个外部进程来替代当前的Go进程。这个时候,我们需要使用Go提供的exec函数。 package main import "syscall" import "os" import "os/exec" func main() { // 本例中

  • 我在Eclipse中有一个maven项目。在src/main/resources下,我有一个名为“directoryToCopy”的目录,其中包含文件。一旦我运行了我的项目,我想将“directoryToCopy”复制到桌面上的本地目录“localDirec”下。 我用了这个: 这在本地工作正常,但是当我想将其作为可执行jar文件运行时,我会得到NullPointerException。 请问有什

  • No alarms and no surprises. — Radiohead 我讨厌惊喜。有时你的 Puppet 配置清单没有像你预期的那样执行, 或者在你不知情的情况下,或许别人又提交了改变。 不管哪种情况发生,在 Puppet 执行配置清单之前能精确地获知它将要执行些什么是非常必要的。 例如,若更新了一个生产服务的配置文件并重新启动该服务,很可能会导致非计划性的停机时间。 又如,有时人为的手

  • 问题内容: 我一直在阅读有关Go中的常量的文章,并且试图了解它们如何在内存中存储和使用。您可以在Go中对非常大的常量执行运算,并且只要结果适合内存,就可以将结果强制为类型。例如,如您所料,此代码显示: 这是如何工作的?在某个时候,Go必须存储并存储在内存中,以便对其执行操作。那么常量是如何存储的,Go如何对其进行算术运算呢? 问题答案: 简短摘要(TL; DR)在答案的结尾。 无类型的任意精度常量

  • 问题内容: 我有一个包含单元测试的Go文件,其中一些使用了公共变量。我正在测试的代码中使用了另一个全局变量。所有这些都可能导致问题。 在Go中,当我们执行位于同一文件中的测试时,它们如何运行?并行还是下一个不会在前一个完成之前开始? 问题答案: 测试起来真的很容易: 使用运行它,输出显示它是顺序的: 因此,正常的测试是依次执行的,但是请不要忘记未定义顺序:如何依次运行golang测试? 还要注意,

  • 尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 节)、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。 runtime 主要由