php+使用go编译,golang如何编译

ac16f21acd7f5ea8583be1f65e55e574.png

Go语言中使用 go build 命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。

go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件。

go build 无参数编译

代码相对于 GOPATH 的目录关系如下:.

└── src

└── chapter11

└── gobuild

├── lib.go

└── main.go

main.go 代码如下:package main

import (

"fmt"

)

func main() {

// 同包的函数

pkgFunc()

fmt.Println("hello world")

}

lib.go 代码如下:package main

import "fmt"

func pkgFunc() {

fmt.Println("call pkgFunc")

}

如果源码中没有依赖 GOPATH 的包引用,那么这些源码可以使用无参数 go build。格式如下:go build

在代码所在目录(./src/chapter11/gobuild)下使用 go build 命令,如下所示:$ cd src/chapter11/gobuild/

$ go build

$ ls

gobuild lib.go main.go

$ ./gobuild

call pkgFunc

hello world

命令行指令和输出说明如下:

第 1 行,转到本例源码目录下。

第 2 行,go build 在编译开始时,会搜索当前目录的 go 源码。这个例子中,go build 会找到 lib.go 和 main.go 两个文件。编译这两个文件后,生成当前目录名的可执行文件并放置于当前目录下,这里的可执行文件是 go build。

第 3 行和第 4 行,列出当前目录的文件,编译成功,输出 go build 可执行文件。

第 5 行,运行当前目录的可执行文件 go build。

第 6 行和第 7 行,执行 go build 后的输出内容。

go build+文件列表

编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件名,go build 会编译这些源码,输出可执行文件,“go build+文件列表”的格式如下:go build file1.go file2.go……

在代码代码所在目录(./src/chapter11/gobuild)中使用 go build,在 go build 后添加要编译的源码文件名,代码如下:$ go build main.go lib.go

$ ls

lib.go main main.go

$ ./main

call pkgFunc

hello world

$ go build lib.go main.go

$ ls

lib lib.go main main.go

命令行指令和输出说明如下:

第 1 行在 go build 后添加文件列表,选中需要编译的 Go 源码。

第 2 行和第 3 行列出完成编译后的当前目录的文件。这次的可执行文件名变成了 main。

第 4~6 行,执行 main 文件,得到期望输出。

第 7 行,尝试调整文件列表的顺序,将 lib.go 放在列表的首位。

第 8 行和第 9 行,编译结果中出现了 lib 可执行文件。

使用“go build+文件列表”方式编译时,可执行文件默认选择文件列表中第一个源码文件作为可执行文件名输出。

go build+包

“go build+包”在设置 GOPATH 后,可以直接根据包名进行编译,即便包内文件被增(加)删(除)也不影响编译指令。

1) 代码位置及源码

相对于GOPATH的目录关系如下:.

└── src

└── chapter11

└──goinstall

├── main.go

└── mypkg

└── mypkg.go

main.go代码如下:package main

import (

"chapter11/goinstall/mypkg"

"fmt"

)

func main() {

mypkg.CustomPkgFunc()

fmt.Println("hello world")

}

mypkg.go代码如下:package mypkg

import "fmt"

func CustomPkgFunc() {

fmt.Println("call CustomPkgFunc")

}

2) 按包编译命令

执行以下命令将按包方式编译 goinstall 代码:$ export GOPATH=/home/davy/golangbook/code

$ go build -o main chapter11/goinstall

$ ./goinstall

call CustomPkgFunc

hello world

代码说明如下:

第 1 行,设置环境变量 GOPATH,这里的路径是笔者的目录,可以根据实际目录来设置 GOPATH。

第 2 行,-o执行指定输出文件为 main,后面接要编译的包名。包名是相对于 GOPATH 下的 src 目录开始的。

第 3~5 行,编译成功,执行 main 后获得期望的输出。

更多golang知识请关注golang教程栏目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle19c监听服务启动失败,Oracle19c安装(有失败成功记录)

Oracle19c安装(有失败成功记录)失败过程失败安装设置 (图为安装成功后获取)成功过程安装设置配置监听桌面类与服务器类的区别总结说明:失败过程失败问题一模一样,无论安装成功或者失败都出现“无法添加用户XXXX到%2%组中”的弹窗,都是点6下继…

linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...

为了弥补距离矢量路由协议的不足,IEFI组织开发了一种基于链路状态的内部网关协议OSPF实验环境:红,绿,蓝三个颜色区域代表三个不同网络的办公场所,要求使用OSPF协议实现网络互通。pc1:172.16.1.1pc2:172.16.2.1pc3:172.…

ubuntu下的linux怎样备份文件,Ubuntu系统如何备份还原?Ubuntu系统备份还原教程

Ubuntu系统如何备份还原?Ubuntu系统是一个以桌面应用为主的开源操作系统,专为开发团队而打造!无论你使用的是什么操作系统,都有可能出现电脑无法修复的故障,这时候备份还原功能就显得非常重要了。今天小编要给大家分享…

jenkins linux编译c,【Linux】【Jenkins】代码编译和执行过程中的问题汇总

1.问题1:java.io.FileNotFoundException: /root/.jenkins/workspace/Videoyi_AutoTest_Maven/config-log4j\log4j.xml (No such file or directory)该问题是由于代码是在windows下编写和编译的,使用的都是\\来实现目录结构的,结果到linux下的…

linux清理整个磁盘空间,一次Linux磁盘空间清理的经历

最近,在Linux上运行BPM应用总是报没有空间的错误。经过一番调查和周折,终于找出了问题的症结,并顺利解决。今天,我把过程总结一下,方便自己或其他有类似问题的朋友参考。这里不对具体命令的具体各种参数做深入介绍&…

c语言手游常用代码,c语言源代码【操作流程】

很多小伙伴都遇到过c语言源代码的困惑吧,一些朋友看过网上零散的c语言源代码的处理方法,并没有完完全全明白c语言源代码是如何解决的,今天小编准备了简单的解决办法,只需要按照1:编写C源代码for_learning_compile.c2&a…

pdxp协议 C语言,集成CC控制逻辑,PD协议及MCU的Type-C应用方案

Type-C系列亮点介绍内包MCU、集成CC逻辑和DP协议支持Typec DP Alt mode 和单独的DP输入支持速率最高可达4-lane 5.4Gbps(HBR2)支持macbook2016版本,拔掉adapter不掉电● DP1.2/Type C转HDMI1.4,支持HDCP1.3,可扩展PD,USB3.0接口● 支持1/2/4 lane DP输…

Android打开谷歌应用,谷歌确认 Android 12 新增剪贴板访问提醒,将在 Beta 2 上线

IT之家 5 月 19 日消息 据外媒 xda-developers 报道,近年来,谷歌一直在打击 Android 系统中的剪贴板访问,并在发布 Android 10 时禁止后台应用读取剪贴板数据。在最新的 Android 12 中,谷歌引入了一项设置,每当应用访问…

Android nfc编译,【Android编译】各个模块编译方法

一、如何编译出vendor.img1. 首先找到产品对应BoardConfig.mk路径:LINUX/android/device/项目/产品/BoardConfig.mk2. 修改BoardConfig.mk设置下面代码中的ENABLE_VENDOR_IMAGE为true。#Enable split vendor imageENABLE_VENDOR_IMAGE : true#ENABLE_VENDOR_IMAGE :…

android7.0 蓝牙定位,BluetoothAdapter在Android6.0/7.0+以上startDiscovery不能发现蓝牙设备问题...

BluetoothAdapter在Android6.0以上startDiscovery不能发现蓝牙设备问题问题的重要原因之一是Android 6.0,Android 7.0的权限问题引起的。在Android 4.0上运行良好的蓝牙代码,在高版本运行异常。比如BluetoothAdapter的startDiscovery虽然启动了发现蓝牙任…

19年的华为手机还能搭载鸿蒙吗,2019年华为手机出货或超2.15亿部 鸿蒙系统最快10月首秀...

科客点评:备用方案可以说是越多越好,这样的确能有效避免突发事件所带来的巨大风险。6月13日,知名分析师郭明錤给出了有关华为的最新预测报告,该预测报告主要对华为手机今年的出货量进行了预测。根据分析师郭明錤的报告显示&#x…

html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...

我们所熟知的HTM5软件是一款非常强大功能的软件,据我了解HTM5软件的特色也是非常有优势的。我们先来介绍一下它的优势:HTML5可以提供:①:提高可用性和改进用户的友好体验;②:有几个新的标签,这将有主(助?)开发人员定义…

app inventor HTML5,[App Inventor] Web客戶端元件 POST 傳值的使用方式

過去在開發App時,Web客戶端元件大部份都以Get的方式進行值的傳遞。那可以用POST嗎?以下簡單的範例,我們將使用Web客戶端元件以POST的方式傳值給一個PHP程式,然後再返回結果顯示在App中。1. 如下圖我們新增一個專案,在工…

html安卓手机打开后只有半屏,宽度设置100%在移动端时变成一半

html代码:手机电脑DIY数码外设智能css代码:.nav-body{position: relative;overflow: hidden;width:100%;height: 400px;}.nav-img{position: absolute;z-index:-1;}.nav-img a{display: block;width:100%;}.nav-img img{height: 400px;width:100%;min-wi…

学计算机U盘内存,在U盘上设置虚拟内存

Zhenbo问答网络江湖小溪饭男人,是的,但是没有。VISTA可以使用U盘来提高性能的原因,必须首先了解3233363533e58685e5aeb9337。这种称为readyboost的技术不使用闪存作为内存,而只是一种加速硬盘读取的技术。硬盘在大容量存储和传输速…

手机uc新窗口打开的html标签,在电脑UC浏览器的新窗口页中如何打开书签

在电脑UC浏览器的新窗口页中如何打开书签UC浏览器是一个很不错的查询资料的软件,我们可以在UC浏览器的新标签页中打开书签,那么如何打开呢?小编就来为大家介绍一下吧。具体如下:1. 第一步,双击并打开UC浏览器软件。2. …

html5版堆糖,堆糖(Duitang)

堆糖的开发背景对于每天都要和互联网打交道的用户来说,在使用Chrome的过程中会遇到很多很多有用的内容,或是一篇文章或是一张图片,用户如果想要保存这些内容大部分都是直接下载到本地进行保存,但是随着电脑保存的内容越来越多&…

如何用计算机直接做工资表,超简单一招!用Excel十秒快速制作工资条

年中到了,财务部的同志们又该挠头了吧。现在很多企业都在使用excel做工资表。不过正如你所知道的,做好的工资表与发出的工资条之间总是少了一样很重要的东东——表头。为了搞定这个表头,各路大神可谓各显神通,比如有的用公式搞定&…

计算机数字媒体专业毕业论文,数字媒体艺术专业毕业论文

数字媒体艺术专业毕业论文简介:此栏目为数字媒体艺术和毕业论文和专业相关的范例,免费教你怎么写视觉传达设计专业考研提供有关参考文献资料。一、引言在社会经济不断发展的今天,人们对自身精神文化越来越重视,数字媒体艺术也得到了迅速发展,…

计算机二级旅游推广ppt,计算机二级PPT真题:制作旅游产品推广PPT

1.本节课我们进行讲解演示文稿题,我们先来看一下题目如图所示。2.我们新建一个PPT,然后我们进行插入我们的ppt素材如图所示保存文件。3.接下来我们看一下第二小题如图所示。4.我们点击【设计】点击【浏览主题】找到我们的主题进行应用。5.接下来我们进行…