go install/build生成的文件命名和路径操作

 更新时间:2020年12月14日 09:44:09   作者:seafooler  
这篇文章主要介绍了go install/build生成的文件命名和路径操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1. 写在前面

本文主要讨论go install/build命令生成的文件命令和生成路径问题。将从两种情况讨论:

文件夹下只有一个“命令源码文件”

文件夹下既有命令源码文件还有其他源码文件

以下实验主要在windows环境下完成呢,所以生成的可执行文件以.exe后缀结尾

2. 文件夹下只有一个“命令源码文件”

假设一个简单的命令源码文件所在的工程组织如下所示:

|__ src
    |__ jeekTimeProject
        |__ test
            |__demo1.go

其中demo1.go的ackage name是 main

//demo1.go
package main
import (
"flag"
)
var name string
func init() {
 flag.StringVar( &name, "name", "everyone", "The greeting object.")
}
func main() {
 flag.Parse()
 fmt.Printf("Hello, %s!\n", name)
}

1、go build demo1.go:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 demo1.exe(以源码文件的名字命名新文件)

2、go build:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 test.exe(以上层文件夹的名字命名新文件)

3、go build jeekTimeProject/test:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 test.exe(以上层文件夹的名字命名新文件)

4、go install demo1.go:

报错,截图如下所示:

5、go install:

在$GOPATH/bin目录下生成可执行文件 test.exe (以上层文件夹的名字命名新文件)

6、设置完$GOBIN环境变量后,运行go install demo1.go:

在$GOBIN目录下生成可执行文件demo1.exe

7、设置完$GOBIN环境变量后,运行go install:

在$GOBIN目录下生成可执行文件test.exe

3. 文件夹下既有命令源码文件还有其他源码文件

假设一个简单的命令源码文件所在的工程组织如下所示:

|__ src
    |__ jeekTimeProject
        |__ test
            |__demo1.go
            |__demo1_lib.go

其中demo1.go和demo1_lib.go的package name是 main

// demo1.go
package main
import (
"flag"
)
var name string
func init() {
 flag.StringVar( &name, "name", "everyone", "The greeting object.")
}
func main() {
 flag.Parse()
 hello(name)
}
//demo1_lib.go
package main
import "fmt"
func hello(name string) {
 fmt.Printf("Hello, %s!\n", name)
}

1、go build demo1.go:

报错,截图如下所示:

2、go build demo1.go demo1_lib.go:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 demo1.exe(以源码文件的名字命名新文件)

3、go build:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 test.exe(以上层文件夹的名字命名新文件)

4、go build jeekTimeProject/test:

在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件 test.exe(以上层文件夹的名字命名新文件)

5、go install demo1.go:

报错,截图如下所示:

6、go install demo1.go demo1_lib.go:

报错,截图如下所示:

7、go install:

在$GOPATH/bin目录下生成可执行文件 test.exe (以上层文件夹的名字命名新文件)

8、设置完$GOBIN环境变量后,运行go install demo1.go:

报错,截图如下:

9、设置完$GOBIN环境变量后,运行go install demo1.go demo1_lib.go:

在$GOBIN目录下生成可执行文件demo1.exe

10、设置完$GOBIN环境变量后,运行go install:

在$GOBIN目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件)

补充:go build后加文件和目录的区别

go build + xxx.go:生成以xxx命名的可执行文件

go build + dir / go build . / go build:生成以目录名命名的可执行文件

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Go 第三方库之类型转换问题

    Go 第三方库之类型转换问题

    今天给大家介绍一个第三方库,专门处理类型转换的问题。对Go 第三方库之类型转换问题感兴趣的朋友跟随小编一起看看吧
    2021-08-08
  • 聊聊Golang中很好用的viper配置模块

    聊聊Golang中很好用的viper配置模块

    这篇文章主要介绍了Golang中很好用的viper配置模块用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go设计模式之原型模式图文详解

    Go设计模式之原型模式图文详解

    原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类,本文将通过图片和文字让大家可以详细的了解Go的原型模式,感兴趣的通过跟着小编一起来看看吧
    2023-07-07
  • go 异常处理panic和recover的简单实践

    go 异常处理panic和recover的简单实践

    在Go语言中,异常处理主要通过panic和recover这两个内建函数来实现,本文主要介绍了go异常处理panic和recover的简单实践,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • Golang template 包基本原理分析

    Golang template 包基本原理分析

    这篇文章主要为大家介绍了Golang template 包基本原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 使用golang写一个redis-cli的方法示例

    使用golang写一个redis-cli的方法示例

    这篇文章主要介绍了使用golang写一个redis-cli的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • go defer避坑指南之拆解延迟语句

    go defer避坑指南之拆解延迟语句

    这篇文章主要为大家详细介绍了go defer避坑指南之如何拆解延迟语句,掌握正确使用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • golang中的container/heap包使用

    golang中的container/heap包使用

    Golang中的container/heap包提供堆操作,适用于实现了heap.Interface的类型,本文主要介绍了golang中的container/heap包使用,感兴趣的可以了解一下
    2025-02-02
  • go语言中if语句用法实例

    go语言中if语句用法实例

    这篇文章主要介绍了go语言中if语句用法,以实例形式分析了if语句的定义及使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • Golang实现获取与解析命令行参数

    Golang实现获取与解析命令行参数

    这篇文章主要为大家详细介绍了Golang如何实现获取与解析命令行参数,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2024-01-01

最新评论