【Go 快速入门】安装 Go 语言 | 开发工具 Goland | 第一个 Go 语言程序

文章目录

    • 前言
      • 安装 Go 语言
      • 编译器 Goland
      • 运行 Go 程序
      • 补充

前言

本系列教程,目的是帮助一个有其他编程基础的 Go 语言小白快速入门 Go 语言,而非启发式学习。每篇幅保证不说废话,尽可能精炼总结,为上手后续的 Go 相关项目打下基础。

系列相关代码同步 gitee 仓库:https://gitee.com/Cauchy_AQ/HelloGo

安装 Go 语言

官网 下载安装 Go 的二进制可执行文件。

在这里插入图片描述

msi 文件是微软的安装包程序,选择默认的 Go 开发包安装位置,一路安装即可。

在这里插入图片描述

安装完成后,可以在 cmd 中执行 go env 查看当前的环境变量,成功执行则代表 Go 安装成功。

在这里插入图片描述


编译器 Goland

官网 下载开发工具 Goland。

在这里插入图片描述

软件需要付费支持正版,也可以免费使用 30 天。

下载好后打开,创建本系列 HelloGo 的第一个项目 01-helloworld

GOROOT:选择 Go 工具链的安装路径,Go 编译器会自动在该目录下查找。

在这里插入图片描述

上述安装 Go 后默认的 GOPATH 下包含三个重要目录:srcpkgbinsrc 目录是用于存放 Go 语言源代码,pkg 目录是用于存放编译后的库文件,bin 目录是用于存放编译后的可执行文件。

虽然目前 Go 采用默认的 Go Modules 模式,而非 GOPATH 模式,但也可以选择将项目文件放在 src 目录下。

在设置中配置 GOPATH,用于指定 Go 语言工作区的路径,这样在模块管理时会先去 $GOPATH/pkg 查找对应模块。

在这里插入图片描述

为使 Go 在后续拉取模块版本时能够直接通过镜像站点来快速拉取。还需修改 GOPROXY,设置 Go 模块代理。

GOPROXY=https://goproxy.cn,direct

在这里插入图片描述


运行 Go 程序

上述创建新项目,配置完成后,打开 Goland 左下角的终端:

在这里插入图片描述

在此执行 go env 查看当前的环境变量:

在这里插入图片描述

可以看到 GOROOTGOPATHGOPROXY 都符合预期设置成功了,并且 GO111MODULE=on 表示开启 Go Modules 模式。

初始化项目完成后,会生成一个 go.mod 文件,它描述了当前项目(模块)的元信息,是启用了 Go modules 项目最重要的标识。

现在创建第一个 Go 程序,新建一个 main.go 文件:

package main // 声明 main 包,表明当前是一个可执行程序import "fmt" // 导入内置 fmt 包func main() {fmt.Println("Hello Golang!")
}

执行go run main.go 也可执行程序,该命令会将文件编译后在临时目录执行
编译go build 将源代码编译成可执行文件

在这里插入图片描述

至此,第一个 Go 项目就成功运行了!


补充

统一GOPROXY

由于后续项目都需要一致的 Go 模块代理,所以可以进行统一设置,并不需要每次创建新项目都进行设置。打开 cmd,执行下述语句。

go env -w GOPROXY=https://goproxy.cn,direct

跨平台编译

上述在执行 go build 后,自动生成了 exe 文件。这是由于 go envset GOOS=windows 生成对应平台下的执行文件。

如果想要在 Windows 平台编译 Linux 可执行文件,只需要在编译时指定目标操作系统和处理器架构即可。

在 cmd 下临时指定相应环境变量,并在同一 cmd 下进入项目目录下执行 go build

set CGO_ENABLED=0 	// 禁用CGO
set GOOS=linux 		// 目标操作系统 Linux
set GOARCH=amd64  	// 目标处理器架构 amd64 (linux:uname -m 查看处理器架构)

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

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

相关文章

php实现多进程的几种方式

目录 一:使用pcntl扩展库 二:使用Swoole扩展 三:使用多进程模式PHP-FPM 在PHP中实现多进程主要有以下几种方式: 一:使用pcntl扩展库 pcntl扩展库提供了多线程相关的函数,如pcntl_fork()用于创建子进程…

【C++干货铺】 RAII实现智能指针

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 为什么需要智能指针? 内存泄漏 什么是内存泄漏,内存泄露的危害 内存泄漏的分类 堆内存泄漏(Heap leak) 系统资…

嵌入式学习-C++-Day2

嵌入式学习-CDay2 一、思维导图 二、作业 1.封装一个矩形类(Rect),拥有私有属性:宽度(width)、高度(height),定义公有成员函数:初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函…

系统架构14 - 软件工程(2)

需求工程 软件需求两大过程三个层次业务需求(business requirement)用户需求(user requirement)功能需求 (functional requirement)非功能需求 概述活动阶段需求获取基本步骤获取方法 需求分析三大模型数据流图数据字典DD 需求定义需求验证需求管理需求基线变更控制过程变更控制…

Linux——服务器管理建议

1、学习Linux的注意事项 1.1、Linux严格区分大小写 Linux是严格区分大小写的,这一点和Windows不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 1.2、Linux中所有内容以文件形式保存 …

SVM算法的python实现

1.随机生成几簇点 随机生成以(1,1,1)(5,5,5)(6,0,0)(10,10,10)(0&#xf…

【NodeJS JS】动态加载字体的各方式及注意事项;

首先加载字体这个需求基本只存在于非系统字体,系统已有字体不需要加载即可直接使用; 方案1:创建 style 标签,写入 font-face{font-family: xxx;src: url(xxx)} 等相关字体样式;将style标签添加到body里;方…

windows用mingw(g++)编译opencv,opencv_contrib,并install安装

windows下用mingw编译opencv貌似不支持cuda,选cuda会报错,我无法解决,所以没选cuda,下面两种编译方式支持。 如要用msvc编译opencv,参考我另外一篇文章 https://blog.csdn.net/weixin_44733606/article/details/1357…

操作系统--Linux虚拟内存管理

​一、什么是虚拟内存地址 收货地址是一个虚拟地址,它是人为定义的 而我们的城市,小区,街道是真实存在的,他们的地理位置就是物理地址 以 Intel Core i7 处理器为例,64 位和32位虚拟地址的格式为: 二、为什…

独立站怎么建设对seo好?

现如今市面上就有不少开源的建站程序可供挑选,哪怕你不懂技术,不懂代码,也能建自己的独立站,效果比不少所谓的用自己技术开发的站都要好,本身做一个网站不难,但你做网站的目的是什么?是为了在搜…

【代码随想录-数组】二分查找

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

JDWP原理分析与漏洞利用

JDWP(Java DEbugger Wire Protocol):即Java调试线协议,是一个为Java调试而设计的通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。说白了就是JVM或者类JVM的虚拟机都支持一种协议,通过该协议,Debugger 端可以和 target VM 通信,可以获取目标 VM的包括类…

选择海外云手机需要考虑什么?

随着跨境电商行业的蓬勃发展,企业们纷纷寻找提升平台流量和广告投放效果的方法,这已成为业界的当务之急。传统的宣传模式在国内受到直播和链接带货等新兴方式的冲击,而在国外,类似的趋势也在悄然兴起,呈现出广阔的发展…

安全防御第三次作业

作业:拓扑图及要求如下图 注:server1是ftp服务器,server2是http服务器 lsw1: 其中g0/0/0口为trunk 实现 1,生产区在工作时间内可以访问服务器区,仅可以访问http服务器 验证: 2,办公…

RedisInsight详细安装教程

简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CLI 和连接的 Redis 进行交互(RedisInsight 内置对 Redis 模块支持)。 RedisIn…

Mac M1 Parallels CentOS7.9 Deploy 禅道

禅道官网下载地址: https://www.zentao.net/download/max4.10-83276.html 一、官网下载 二、解压安装 将下载好的包传至CentOS7.9虚拟机 zhinian192 ~ % scp Downloads/ZenTaoPMS-max4.10-zbox_arm64.tar.gz root10.211.55.36:~ ZenTaoPMS-max4.10-zbox_arm64.tar.gz …

C#,入门教程(31)——预处理指令的基础知识与使用方法

上一篇: C#,入门教程(30)——扎好程序的笼子,错误处理 try catchhttps://blog.csdn.net/beijinghorn/article/details/124182386 Visual Studio、C#编译器以及C#语法所支持的预处理指令,绝对是天才设计。 编译程序的时候会发现&am…

计算机网络体系架构认知--网络协议栈

文章目录 一.计算机网络分层架构各协议层和计算机系统的联系从整体上理解计算机网络通信计算机网络通信的本质 二.Mac地址,IP地址和进程端口号三.局域网通信与跨局域网通信局域网通信跨局域网通信全球互联的通信脉络 四.网络编程概述 一.计算机网络分层架构 实现计算机长距离网…

STP生成树协议

生成树协议(spanning tree protocol) 是一种工作在OSI网络模型中第二层(数据链路层)的通信协议,是一种由交换机运行的,基本应用是防止交换机冗余链路产生的环路,用于确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴&#x…

什么是 Web3.0

什么是Web3.0 对于 Web3.0 的解释网上有很多,目前来说 Web3.0 是一个趋势,尚未有明确的定义。我们今天讨论下几个核心的点,就能很好的理解 Web3.0 要解决哪些问题 谁创造数据,这里的数据可以是一篇博客,一段视频&…