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

news2024/10/7 18:24:54

文章目录

    • 前言
      • 安装 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.coloradmin.cn/o/1411700.html

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

相关文章

渲染与创造之美:互为表里的艺术

在五彩斑斓的艺术世界中,渲染与创造是两股不可或缺的力量。它们之间的关系,恰如弓与箭,互为表里,共同塑造出无数令人叹为观止的视觉景象。创造之美是指通过创新思维和创造力,将想象具象化为现实,创造出新的…

Spyder安装与使用

Spyder是一个Python的集成开发环境(IDE),由科学家、工程师和数据分析师设计。它提供了强大的编辑、调试和分析功能,以及数据探索和可视化工具,特别适合科学计算和数据分析。 Spyder的主要特点包括: 编辑器…

仿双色球抽奖大转盘

仿双色球抽奖大转盘 前言1、页面搭建2、JS逻辑编写3、Css样式编写4、编译发布5、往期回顾总结: 前言 需求来时奋笔疾书,需求变时追风逐电 ! 年低了,接到部门需求,2天时间要开发一个仿双色球抽奖大转盘,于是…

malloc()和free()

一、malloc() //格式: void *malloc(size_t str);//举例 double *ptd; ptd (double *) malloc(30*sizeof(double));//30个double类型的值请求内存空间 //并设置ptd指向该位置 malloc函数会找到合适的空闲内存块,这样的内存是匿名的。也就是说&#xff…

利用STM32CubeMX和Keil模拟器,3天入门FreeRTOS(4.2) —— 中断函数中使用队列

前言 (1)FreeRTOS是我一天过完的,由此回忆并且记录一下。个人认为,如果只是入门,利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后,再去学习网上的一些其他课程也许会简单很多。 (2&am…

Android HIDL概述与绑定模式的实现

一、前言 Android O(8.0) 版本之后,底层实现有了比较大的变化,最显著的一个方面就是 HIDL 机制的全面实施。本文对于理解系统源码中 Gnss、Usb、Camera 等模块的工作原理有极大帮助。 二、HIDL 设计目的 在 Android O(8.0) 之前系统的升级牵扯多方协作…

安全用电管理平台方案介绍——Acrelcloud-6000

安全用电管理平台是一个针对电力系统安全管理的平台,旨在提供对电力设备和用电行为进行监控、分析和管理的解决方案。该平台结合了物联网技术、数据分析和远程监控等技术手段,能够实时监测、分析和预警电力系统的安全状况,以便及时采取措施防…

再谈Android View绘制流程

一,先思考何时开始绘制 笔者在这里提醒读者,Android的View是UI的高级抽象,我们平时使用的XML文件也好,本质是设计模式中的一种策略模式,其View可以理解为一种底层UI显示的Request。各种VIew的排布,来自于开…

KernelGPT: LLM for Kernel Fuzzing

KernelGPT: Enhanced Kernel Fuzzing via Large Language Models 1.Introduction2.Background2.1.Kernel and Device Drivers2.2.Kernel Fuzzing2.2.1.Syzkaller规约2.2.2.规约生成 3.Approach3.1.Driver Detection3.2.Specification Generation3.2.1.Command Value3.2.2.Argum…

Vue2学习之第六、七章——vue-router与ElementUI组件库

路由 理解: 一个路由(route)就是一组映射关系(key - value),多个路由需要路由器(router)进行管理。前端路由:key是路径,value是组件。 1.基本使用 安装vue-…

springboot快速写接口

1. 建proj形式 name会变成文件夹的名字,相当于你的项目名称 基础包 2. 基础依赖 3. 配置数据库 这里要打开mysql,并且创建数据库 方法: 安装好数据库,改好账号密码用navicat来建表和账号配置properties.yml文件即可 4.用res…

读AI3.0笔记07_游戏与推理

1. 始于游戏,不止于游戏 1.1. 开发超人类的游戏程序并不是人工智能的最终目的 1.2. AlphaGo所有的版本除了下围棋,其他什么也不会 1.2.1. 其最通用的版本AlphaGo Zero也一样 1.3. 这些游戏程序中没有一个能够将其在一款游戏中学到的知识迁移到其他游…

引领未来:云原生在产品、架构与商业模式中的创新与应用

文章目录 一、云原生产品创新二、云原生架构设计三、云原生商业模式变革《云原生落地 产品、架构与商业模式》适读人群编辑推荐内容简介目录 随着云计算技术的不断发展,云原生已经成为企业数字化转型的重要方向。接下来将从产品、架构和商业模式三个方面&#xff0c…

融合创新:传统企业数字化转型的业务、战略、操作和文化变革

引言 随着科技的不断演进,传统企业正站在数字化转型的前沿,这是一场前所未有的全面变革之旅。数字化已经超越了单纯的技术升级,成为企业保持竞争力、开创未来的必然选择。本文将引领您探讨,迈向数字化未来的传统企业全面数字化转…

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据…

解密:消息中间件的选择与使用:打造高效通信枢纽

目录 第一章:消息中间件介绍 1.1 什么是消息中间件 1.2 消息中间件的作用 1.3 消息中间件的分类 第二章:消息中间件的选择标准 2.1 性能 2.2 可靠性 2.3 可扩展性 2.4 易用性 2.5 社区支持 2.6 成本 第三章:常见的消息中间件对比…

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace,即容器和宿主机使用同一个IP、端口范围(容器与宿主机或其他使…

[ACM学习] 进制转换

进制的本质 本质是每一位的数位上的数字乘上这一位的权重 将任意进制转换为十进制 原来还很疑惑为什么从高位开始,原来从高位开始的,可以被滚动地乘很多遍。 将十进制转换为任意进制

VsCode提高生产力的插件推荐-持续更新中

别名路径跳转 自定义配置// 文件名别名跳转 "alias-skip.mappings": { "~/": "/src", "views": "/src/views", "assets": "/src/assets", "network": "/src/network", "comm…

CNN卷积理解

1 卷积的步骤 1 过滤器(卷积核)(Filter或Kernel): 卷积层使用一组可学习的过滤器来扫描输入数据(通常是图像)。每个过滤器都是一个小的窗口,包含一些权重,这些权重通过训…