首页 > 编程语言 >第一个Go程序

第一个Go程序

时间:2022-08-28 14:12:20浏览次数:44  
标签:src exe 第一个 cmd 程序 编译 go linux Go

1. hello world

// 导入了这个包,意味着这个go程序最终要被编译成可执行程序
package main

// 导入语句
import "fmt"

// 函数外面只能放一些标识符(变量、常量、函数、类型)的声明,不能放语句会报错,具体的语句只能放到函数里
// 程序的入口函数
func main() {
	fmt.Println("hello, world")
}

2. 运行

  • 在golang中,鼠标放在代码末尾行,右击,选择go run,注意不是运行整个项目,是运行单个go程序
  • 或者是命令行执行go run

3. 编译

在终端窗口进行编译,进入src目录,输入 go build

会在src目录下产生一个src.exe的文件,这个文件以项目名命名,在哪个目录下编译,可执行文件就会在哪个文件夹下。如在src/bin目录下编译,可执行文件就会在bin下面了,编译完成后执行exe或者二进制,速度会很快!

go build  ../src/test.go   # 这个会产生一个test.exe的文件,就不是项目名了
go build  -o xxx.exe  ../src/test.go  # windows下
 window下编译指定名称的话要加exe后缀,不然识别不出来是什么格式的
go build -o 进制转换器.exe  ../src/test_045_进制转换器.go  

4. 交叉编译

在windows下编译Linux可执行程序

  • powershell
$ENV:CGO_ENABLED=0
$ENV:GOOS="linux"
$ENV:GOARCH="amd64"
  • cmd
SET CGO_ENABLED=0  // 禁用CGO
SET GOOS=linux     // 目标平台是linux
SET GOARCH=amd64   // 目标处理器架构是amd64

输入go build 进行编译,可以得到Linux下的可执行文件,要注意goland和git打开的是终端powershell,要按照第一个输入命令,cmd打开是cmd命令行,需要按照第二个进行设置,得到文件后,传到Linux服务器上测试即可,注意chmod +x 赋予执行权限

[root@os14 ~]# chmod +x src
[root@os14 ~]# ./src
hello, world

通过这个例子,可以看到在编译方面,go确实比py方便很多。py虽然也可以借助第三方包pyinstaller编译,但编译后会含有很多dll文件,编译步骤也相对复杂,而且没法跨平台编译,windows下更可能存在兼容性问题。这就是编译型语言的优势。在goland里面可以设置cmd格式的终端

编译在代码开发阶段还是比较少,代码开发完成要部署到服务器阶段,会用的比较频繁。

5. 补充交叉编译错误

一直处在学习阶段的我,很久没编译了,跟着B站老男孩视频学习到goroutine时,老师讲的说GOMAXPROCS在windows下跑不出来效果,我照着敲了也跑不出来,说是在mac和Linux上可以(具体原因在goroutine章节有介绍),于是,就用到了交叉编译,可是编译完成后,遇到了下面错误

cmd/go: unsupported GOOS/GOARCH pair linux /amd64

原来是我执行SET GOOS=linux 命令时,后面多了一个空格!网上有和我犯一样错误的人(后来发现都是复制粘贴惹的祸)。

标签:src,exe,第一个,cmd,程序,编译,go,linux,Go
From: https://www.cnblogs.com/sunnybowen/p/16632685.html

相关文章

  • 在排序数组中查找元素的第一个和最后一个位置
    目录题目描述解题思路解题代码题目描述题目地址:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/题目要求给你一个按照非递......
  • GoLand试用到期处理
    1、删除配置删除C:\Users\xlsa\AppData\Roaming\JetBrains\GoLand2021.2\eval\GoLand212.evaluation.key删除C:\Users\xlsa\AppData\Roaming\JetBrains\GoLand2021.......
  • Go学习开篇
    1.go介绍21世纪的c语言,本身开发者之一就是c语言的创始人golang是golanguage的简称,我们简称go,是Google开发的一种静态的强类型、编译型、并发型,并具有垃圾回收功能的[......
  • c++ delegate 类,最大16个参数,用程序生成的代码
    2017-02-1604:58:34 发布于 CSDN 现转博客园。 读这篇文章的前提是,我们使用的编辑器对c++11的支持不太友好。下面是测试代码:#include<stdio.h>#include<stdlib......
  • firstgolang
    packagemain//程序的包名/*import"fmt"import"time"*/import("fmt""time")//main函数funcmain(){//函数的{一定是和函数名在同一行的,否则编......
  • 程序设计大赛
    一开始可以分清楚板块1.背景2.基本功能介绍+难点功能可以里面的内容串起来3.重难点+亮点分清楚,难点,亮点我们答辩时间是10分钟,背景大概是1分半,首先是整个系统爬......
  • 如何安装设备的驱动程序
    平常的生活工作中,我们经常会为电脑外接一些外部设备,以实现某项功能,若要使这些外接设备能够正常的在电脑上运行,就必须保证电脑成功的安装了相应的驱动程序,下面我就来讲......
  • Go语言实现分布式对象存储系统
    实现一个可扩展的,简易的,分布式对象存储系统存储系统介绍先谈谈传统的网络存储,传统的网络存储主要分为两类:NAS,即NewtworkAttachedStorage,是一个提供了存储功能和文件......
  • mongodb基础操作
    前言本文主要针对的是mongoDB的基本操作,以及使用python语言对mongodb的接口调用。使用工具为pycharmerobot3T【已经被收购,推出了收费版。robot3T还是免费的】......
  • Django入门到放弃之缓存及信号机制
    1.缓存介绍在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.当一个网站的用户访问量很大的时......