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.xdnf.cn/news/1486169.html

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

相关文章

C#中栈和堆以及修饰符

关于堆中字符串的存放 string s1"123" string s2"123" string s1"456" 此时s1输出为456 而s2仍然为123 因为在使用 String str "字符串" 的方式来创建String变量的时候,那么String的值便会存储在String常量池中&#x…

算法日记day 17(二叉树的最大、最小深度)

一、二叉树的最大深度 题目: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2&#xff1…

Redis底层数据结构-双向链表

链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。C语言并没有内置这种数据结构,独立实现。 实现 节点结构adlist.h/listNode typedef struct listNode {// 前置节点struct listNode …

pycharm的开头中设置作者开发时间等信息成为模板

就是在pycharm中写代码的时候,开头会有一些代码相关的信息,比如说作者,比如说开发时间等等,如果每次都写比较麻烦,其实pycharm中可以设置成模板,而且时间还会自动更新。 一,打开pycharm点文件&…

Django cursor()增删改查和shell环境执行脚本

在Django中,cursor()方法是DatabaseWrapper对象(由django.db.connectio提供)的一个方法,用于创建一个游标对象。这个游标对象可以用来执行SQL命令,从而实现对数据库的增删改查操作。 查询(Select&#xff0…

设计分享—国外医疗行业界面设计

医疗诊断界面是一个直观且信息丰富的数字平台,它集成了患者基本信息、病史记录、当前症状描述、检查结果展示以及智能诊断建议等功能于一体。 界面设计简洁明了,便于医生快速浏览关键信息,同时利用先进的算法辅助医生进行精准诊断&#xff0…

鸿蒙系统(java方法以及数据结构)

在java中数据结构是以类和对象的形式实现的,常见的数据结构及其简单实现 1.数组(Array) 2.链表(Linked List) 3.栈(Stack) 4.队列(Queue) 5.哈希表(Hash…

elasticsearch8.14.1集群安装部署

elasticsearch安装部署,首先需要准备至少三台服务器,本例再windows11下安装三台vmware虚拟机,利用centOS7系统模拟服务器环境。 本例假设你已经安装了三台vmware和centOS7,且centOS7运行正常。接下来我们直接讲解elasticsearch下载…

Linux(linux命令)和Window(powershell)的查找命令

目录 LinuxWindow基本操作(1)Get-ChildItem(2)Get-ChildItem模糊查找1. 使用星号(*)通配符(常用)1、第一个命令:使用 `-Filter` 参数(常用)2、第二个命令:使用管道和 `Where-Object`3、差异2. 使用问号(?)通配符(不常用)3. 结合使用星号和问号(不常用)4. 使…

3GPP R18 Multi-USIM是怎么回事?(四)

前几篇主要是MUSIM feature NAS 部分内容的总结,这篇开始看RRC部分相关的内容,由于RRC部分内容过长,也分成了2篇。这篇就着重看下musim gap以及RRC触发UE离开RRC Connected mode相关的内容,直入正题, 上面的内容在overview中有提到,对应的是如下38.300中的描述。 处于网络…

【python 已解决】ZeroDivisionError: division by zero —— 深度解析与解决策略

【python 已解决】ZeroDivisionError: division by zero —— 深度解析与解决策略 在编程过程中,尤其是使用Python这类高级编程语言时,ZeroDivisionError是一个常见的运行时错误。这个错误发生时,意味着你的代码中尝试进行了除以零的操作&am…

【深度学习】yolov8-seg分割训练,拼接图的分割复原

文章目录 项目背景造数据训练 项目背景 在日常开发中,经常会遇到一些图片是由多个图片拼接来的,如下图就是三个图片横向拼接来的。是否可以利用yolov8-seg模型来识别出这张图片的三张子图区域呢,这是文本要做的事情。 造数据 假设拼接方式有…

wireshark过滤器,如何使用wireshark捕获指定域名的流量

过滤器比较高级,但是也很重要,我决定通过一个案例来学习过滤器的知识点。 比如,我现在访问 zhangdapeng.com 我希望能够捕获关于这个域名下的流量,该如何实现呢? 我选择了捕获以太网的流量,但是目前捕获到…

【Linux】从零开始认识多线程 --- 线程ID

在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 1 前言 上一篇文章中讲解了线程控制的基本接口: 线程创建pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);: pthread_t *thread :输出…

43 华三AC登录Web页面

一 无线上WEB页面 1 创建vlan 56 [AC-KongZhi]vlan 56 2 退出 [AC-KongZhi-vlan56]quit 3 进入vlan三层口 配置IP地址 [AC-KongZhi]interface Vlan-interface 56 [AC-KongZhi-Vlan-interface56]ip address 192.168.56.55 24 4 在AC控制器与Host主机的接口上能通关vlan 5…

MySQL进阶之(十)事务和隔离级别

十、事务和隔离级别 10.1 事务10.1.1 事务介绍10.1.2 事务四大特性10.1.3 事务的状态10.1.4 如何使用事务01、事务控制语句02、事务操作 10.2 事务的隔离级别10.2.1 事务数据可见性和并发问题01、脏写(Dirty Write)/更新丢失02、脏读(Dirty R…

Python怎样读取URL生成PDF

1. 安装依赖的exe 需要在这个网址,安装一个exe包,地址:https://wkhtmltopdf.org/ 进入网址后,点这个位置: 选择一个你的操作系统的下载链接: 安装后的exe文件: C:\Program Files\wkhtmltopdf…

分布式服务框架zookeeper+消息队列kafka

一、zookeeper概述 zookeeper是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务,状态同步,配置中心,集群管理等。 在分布式环境下,经常需要对应用/服…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十四章 注册字符设备号

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

硅谷裸机云大宽带服务器连接不上是怎么回事?该如何处理

硅谷裸机云大宽带服务器连接不上的常见原因主要有网络设置、网络设备、服务端、软件和服务、物理层等,出现以上问题,RAK部落小编建议大家可以通过以下一系列的方法进行排查和解决。具体分析如下: 1.检查网络设置   核对配置信息&#xff1a…