1 go语言环境的搭建

本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。
查看相关资料与知识库
专栏地址:Go专栏
如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。

每种编程语言都需要一个开发环境,Go 也不例外。如果你已经编写了一两个 Go 程序,那么你就已经有了一个工作环境,但你可能已经错过了一些更新的技术和工具。如果这是你第一次在电脑上安装 Go,不用担心;安装 Go 及其支持工具非常简单。设置环境并验证后,您将构建一个简单的程序,了解构建和运行 Go 代码的不同方法,然后探索一些能让 Go 开发更轻松的工具和技术。

安装 Go 工具

要编译 Go 代码,您需要下载并安装 Go 开发工具。您可以在 Go 网站的下载页面找到最新版本的工具。选择适合您平台的下载并安装。Mac 的 .pkg 安装程序和 Windows 的 .msi 安装程序会自动将 Go 安装到正确的位置,移除任何旧的安装程序,并将 Go 二进制文件放到默认的可执行路径中。

如果你是 Mac 开发者,可以使用 Homebrew 安装 Go,命令为 .Go.NET Framework 3.0。使用 Chocolatey 的 Windows 开发者可以使用命令 golang .

各种 Linux 和 BSD 安装程序都是压缩后的 TAR 文件,会扩展到一个名为 go 的目录。将该目录复制到 /usr/local,并将 /usr/local/go/bin 添加到你的文件中,这样就可以访问该命令了:

在这里插入图片描述

你可能需要 root 权限才能写入 /usr/local。如果命令失败,请使用 sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz 重新运行。

Go 程序编译成一个本地二进制文件,运行时不需要安装任何其他软件。这与 Java、Python 和 JavaScript 等需要安装虚拟机才能运行程序的语言截然不同。使用单个本地二进制文件可以让用 Go 编写的程序更容易发布。使用 Docker 或 Kubernetes 的开发者通常可以将 Go 应用程序打包到一个从头开始或无发行版的镜像中。

您可以打开终端或命令提示符并键入,以验证环境设置是否正确:

$ go version

如果一切设置正确,打印出来的内容应该是这样的:

go version go1.20.5 darwin/arm64

这说明这是 MacOS 上的 Go 1.20.5 版本。(达尔文是 macOS 的核心操作系统,arm64 是基于 ARM 设计的 64 位芯片的名称)。在 x64 Linux 上,你会看到

go 版本 go1.20.5 linux/amd64

安装示例

Go 语言支持以下系统:

  • Linux
  • FreeBSD
  • Mac OS X(也称为 Darwin)
  • Windows

安装包下载地址为:https://go.dev/dl/。

如果打不开可以使用这个地址:https://golang.google.cn/dl/。

各个系统对应的包名:

操作系统包名
Windowsgo1.4.windows-amd64.msi
Linuxgo1.4.linux-amd64.tar.gz
Macgo1.4.darwin-amd64-osx10.8.pkg
FreeBSDgo1.4.freebsd-amd64.tar.gz

在这里插入图片描述


UNIX/Linux/Mac OS X, 和 FreeBSD 安装

以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法:

1、下载二进制包:go1.4.linux-amd64.tar.gz。

2、将下载的二进制包解压至 /usr/local目录。

tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz

3、将 /usr/local/go/bin 目录添加至 PATH 环境变量:

export PATH=$PATH:/usr/local/go/bin

以上只能暂时添加 PATH,关闭终端下次再登录就没有了。

我们可以编辑 ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末尾,这样就永久生效了:

export PATH=$PATH:/usr/local/go/bin

添加后需要执行:

source ~/.bash_profile
或
source /etc/profile

**注意:**MAC 系统下你可以使用 .pkg 结尾的安装包直接双击来完成安装,安装目录在 /usr/local/go/ 下。


Windows 系统下安装

Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。

默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。

安装测试

创建工作目录 C:>Go_WorkSpace

GoLand中新建go项目

在这里插入图片描述

第一个GO程序

让我们来了解一下编写 Go 程序的基础知识。在这个过程中,你将看到组成一个简单 Go 程序的各个部分。你可能还不能完全理解,没关系,这正是专栏后续内容的目的所在!

使用goland创建go的项目后,可以看到项目的截图如下:
在这里插入图片描述

每个模块的根目录下都有一个 go.mod 文件。Running 会为您创建该文件。基本 go.mod 文件的内容如下:

module learn_gogo 1.21

go.mod 文件声明了模块的名称、模块所支持的 Go 最低版本,以及模块所依赖的任何其他模块。您可以把它想象成类似于 Python 使用的 requirements.txt 文件或 Ruby 使用的 Gemfile 文件。

现在,你只需知道 Go 项目被称为模块。模块不仅仅是源代码。它还是模块内代码依赖关系的精确说明。

go build

现在,让我们来编写一些代码!打开文本编辑器,输入以下文本,并将其保存在 ch1 中,文件名为 hello.go:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package mainimport "fmt"func main() {fmt.Println("Hello world!")
}

让我们快速浏览一下创建的 Go 文件的各个部分。第一行是包声明。在 Go 模块中,代码被组织成一个或多个包。Go 模块中的主包包含启动 Go 程序的代码。

接下来是导入声明。该声明列出了该文件中引用的软件包。您要使用的是标准库中的(通常发音为 “fumpt”)包中的一个函数,因此在此列出该包。与其他语言不同,Go 只能导入整个软件包。你不能将导入限制在包内的特定类型、函数、常量或变量上。

所有 Go 程序都是从软件包中的函数开始的。您可以用左大括号声明该函数。与 Java、JavaScript 和 C 一样,Go 也使用大括号来标记代码块的开始和结束。

函数的主体只有一行。它说明您正在调用软件包中的 Println 函数,其参数为 .作为一名经验丰富的开发人员,你很可能猜到这个函数调用的作用。

右键运行:
在这里插入图片描述

输出如下:

在这里插入图片描述

go fmt

Go 的主要设计目标之一是创建一种可以高效编写代码的语言。这意味着要有简单的语法和快速的编译器。这也促使 Go 的作者重新考虑代码格式。大多数语言在代码格式方面都有很大的灵活性。Go 却没有。强制执行标准格式可以大大简化源代码处理工具的编写。这将简化编译器,并允许创建一些用于生成代码的巧妙工具。

这样做还有一个好处。开发人员历来在格式之争上浪费大量时间。由于 Go 定义了一种标准的代码格式化方式,Go 开发人员可以避免在括号样式和制表符与空格之间发生争执。例如,Go 语言程序使用制表符来缩进,如果开头的括号与声明或命令不在同一行,那就是语法错误。

许多 Go 开发者认为,Go 团队定义标准格式是为了避免开发者争论,后来才发现工具的优势。然而,Go 开发负责人 Russ Cox 曾公开表示,更好的工具是他最初的动机。

Go 开发工具包含一个命令,它可以自动修复代码中的空白,使其符合标准格式。不过,它不能修复错行的大括号。用下面的命令运行它$ go fmt ./…

go fmt ./hello.go
go fmt ./... 使用会告诉 Go 工具将命令应用到当前目录和所有子目录中的所有文件。在学习更多 Go 工具时,您还会看到它。

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

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

相关文章

软件测试---测试需求分析

课程目标 什么是软件测试需求 软件测试需求的必要性 如何对软件测试需求进行分析(重点) 课程补充 灰度测试(基于功能):先发布部分功能,然后看用户的反馈,再去发布另外一部分的功能更新。 A/B测…

运筹学笔记

计算的时间问题!计算机解决了计算量的问题! 计算机的发展对运筹学研究起到了极大的促进作用。 运筹学的一个特征之一是它常常会考虑寻求问题模型的最佳解决方案(称为最优解)。 没有人能成为运筹学所有方面的专家。 分析学越来越流…

Pytorch 8

这节课是讲mini_batch数据下载的 from torch.utils.data import Dataset from torch.utils.data import DataLoader第一个类是抽象类,只能继承 第二个可以直接用 class DiabetesDataset(Dataset):def __init__(self, filepath):xy np.loadtxt(filepath, delimit…

redis的分片集群(仅供自己参考)

前言:为什么使用分片集群:因为redis的主从和哨兵机制主要是用来解决redis的高并发读的问题,还有redis的高并发的写的问题没有解决。使用分片集群就可以很好的解决redis写的问题,有多个master就可以实现并发的写。同时,…

C++学习笔记04-补充知识点(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

Mysql-高级实战案例

文章目录 千万级用户场景下的运营系统SQL调优1. 索引优化2. 查询优化3. 分析查询执行计划4. 存储引擎配置5. 数据库架构优化6. 监控与报警7. 定期维护8. 软件升级 亿级数据量商品系统的SQL调优实战1. 索引优化2. 查询重构3. 分区策略4. 优化查询计划5. 缓存策略6. 数据库架构调…

国内微短剧系统平台抖音微信付费小程序app开发源代码交付

微短剧作为当下热门的内容,结合抖音平台的广泛用户基础,开发微短剧付费小程序APP具有显著的市场潜力,用户对于短剧内容的需求旺盛,特别是在言情、总裁、赘婿等热门题材方面,接下来给大家普及一下微短剧小程序系统。 顺…

rce漏洞-ctfshow(50-70)

Web51 if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\|\%|\x09|\x26/i", $c)){ system($c." >/dev/null 2>&1"); } Nl,绕过tac,cat,绕…

Pytest进阶之fixture的使用(超详细)

目录 Fixture定义 Fixture使用方式 作为参数使用 Fixture间相互调用(作为参数调用) 作为conftest.py文件传入 Fixture作用范围Scope function class module session Fixture中params和ids Fixture中autouse Fixture中Name 总结 pytest fixture 是一种用来管理测试…

回溯算法(相关解题):

求子集序列: 解题思路: 已知原集合的数据位数为N,则可以通过二进制比对原来集合,二进制位为1则输出集合上的该位数据,为0则空,二进制的01排序规律与子集的输出一致由集合的位数可以判断出二进制的范围 0 ~…

Direct3D 9的介绍以及Demo演示

文章目录 1、d3d9的介绍1. 概述2. 核心概念3. 初始化和渲染流程4. 常见用法5. 先进特性6. 总结 2、d3d9demo详解1.头文件和全局变量2.IGW 相关全局变量3.函数:CloseIGW4.函数:OpenIGW5.UI 控件和日志处理6.登录和登出相关函数7.登录回调函数8.DXUT 相关回…

P3-AI产品经理-九五小庞

AI产品的数据流向 美团外卖,实时只能调度 美团28分钟送达需求的分析 AI产品常用的算法 常用算法 常见的AI算法解析 自然语言生成NLG语音识别:科大讯飞,通义千问 虚拟现实机器学习平台 决策管理系统生物特征识别技术 RPA(机器人流程自动…

探索 GPT-4o Mini:开发者的新利器

文章目录 探索 GPT-4o Mini:开发者的新利器1. 引言2. GPT-4o Mini 的核心特点3. 使用 GPT-4o Mini 的实际案例3.1 客户支持自动化3.2 内容生成与创作3.3 代码生成与优化 4. 使用体验分享5. 未来展望6. 结论 探索 GPT-4o Mini:开发者的新利器 OpenAI 最新…

UE4-光照重建

当我们拉入新的光源和模型到我们的场景中后,会产生这样的情况: Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一: 或者也可以在世界大纲中选中我们的光源,然后将我们的光源改变为可以…

JAVA基本概念(垃圾回收、API)- 10

一、垃圾分代回收机制 1. 垃圾回收针对的是堆内存 2. 对象在堆内存中存储,对象在使用完成之后会在不定的某个时刻被垃圾回收器(GC - Garbage Collector)解析 掉。现阶段回收过程无法手动控制。当调用构造方法的时候,创建好一个对象,因为Java中对每种数据类型都明确 给…

Jdk22新特性

JDK 22 引入了多项新特性,旨在提升 Java 语言的性能、简化开发过程以及增强代码的可读性和可维护性。以下是对 JDK 22 新特性的详细归纳: 核心Java库 外部函数和内存 API (JEP 454):提供了一个纯 Java 应用程序接口,用于替代 JNI(Java Native Interface),以支持直接调…

前端切片下载

要在Vue3前端实现文件切片下载,可以参考以下步骤: 分片函数:将文件分成多个小片段。 生成Blob对象:将片段转换为Blob对象。 创建下载链接:通过Blob对象创建下载链接。 合并下载的片段:下载完成后&#x…

判断字符串,数组方法

判断字符串方法 在JavaScript中,可以使用typeof操作符来判断一个变量是否为字符串。 function isString(value) {return typeof value string; } 判断数组 在JavaScript中,typeof操作符并不足以准确判断一个变量是否为数组,因为typeof会…

深入理解Python中的Pandas库

目录 Pandas简介安装PandasPandas的核心数据结构 SeriesDataFrame 数据加载与存储 从CSV文件读取数据从Excel文件读取数据从SQL数据库读取数据数据存储 数据操作 数据选择数据过滤数据排序数据分组与聚合数据透视表 数据清洗与处理 处理缺失值数据转换数据合并 数据可视化实战…

KingBase 下的 sys_hba.conf 详解

客户端访问KingbaseES数据库,需要建立身份的认证,sys_hba.conf相当于认证的黑白名单,可以通过配置sys_hba.conf允许或拒绝客户端对数据库服务器的访问。 sys_hba.conf原理: 客户端认证是由一个配置文件(通常名为sys_hba.conf并被存放在数据库集簇目录中)控制(HBA表示基…