1 go语言环境的搭建

news2024/11/13 12:57:36

本专栏将从基础开始,循序渐进,由浅入深讲解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_go

go 1.21

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

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

go build

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package main

import "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.coloradmin.cn/o/1944876.html

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

相关文章

IT服务管理业务策划与实施:追求IT用户满意与持续改进

在当今的信息化时代,IT服务已成为企业运营不可或缺的一部分。有效的IT服务管理不仅能够提升企业运营效率,还能显著增强IT用户满意度。本文将围绕IT服务管理的业务策划与实施展开探讨,旨在为运维团队提供一套全面、系统的参考框架。 一、IT服…

AI在候选人评估中的作用:精准筛选与HR决策的助力

一、引言 随着科技的迅猛发展,人工智能(AI)技术已逐渐渗透到各个行业和领域,人力资源管理(HRM)亦不例外。在候选人评估的环节中,AI技术以其高效、精准的特性,正在逐步改变着传统的招…

el-table表格 及其el-pagination分页 封装及其使用

1、首页在components文件夹中新建table文件夹 table文件夹下table.vue全部代码&#xff1a; <template><el-table:stripe"stripe":row-key"handlerRowKey()":tree-props"treeProps":border"border":show-summary"showS…

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象&#xff0c;然后进行深度遍历所有属性&#xff0c;给每个属性添加getter和setter&#xff0c;结合发布订阅模式实现响应式。 存在的问题&#xff1a; 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

蓝桥杯单片机学习总结(Day15 超声波测距)

开启超声波模块测距方法&#xff1a; X20106A是一款红外线检波接收的专用芯片&#xff0c;常用于电视机红外遥控接收器。当CX20106A接收到40KHz的信号时&#xff08;第五脚200K的电阻决定了其频率为40KHz&#xff09;&#xff0c;会在OUT脚输出一个低电平下降脉冲。这个信号甚至…

IDEA打开终端报错Cannot open Local Terminal命令行功能

idea项目中不能打开命令行功能 IDEA打开终端报错Cannot open Local Terminal 意思是打开命令行发生错误 idea上配置shell终端&#xff0c;命令行页面 打开右上角 File–> setting–> Tools–> 终端 找到Shell 路径 文本框中原本是是powershell.exe&#xff0c;现在…

Java | Leetcode Java题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVers…

企业专线和家庭宽带的区别

企业专线&#xff08;也称为商业互联网服务&#xff09;与家庭宽带在多个方面存在区别&#xff0c;这些差异主要体现在网络性能、服务质量、价格、合同条款以及支持服务上。以下是两者的主要区别&#xff1a; 1、网络质量和速度&#xff1a; 企业专线通常提供更稳定、更快的网络…

虚拟机Ubuntu20.04 利用串口调试机械臂

虚拟机Ubuntu20.04 利用串口调试机械臂 串口库问题 由于机械臂使用的是串口进行驱动控制&#xff0c;在python中相关的串口库为serial和pyserial两个&#xff0c;这里我曾踩过雷同时安装了serial与pyserial两个库&#xff0c;导致报错如下所示&#xff1a; AttributeError: m…

Apache Tomcat文件包含漏洞复现(详细教程)

1.漏洞原理 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;其安装后会默认开启ajp连接器&#xff0c;方便与其他web服务器通过ajp协议进行交互。属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和…

责任链模式的应用与解析

目录 责任链模式责任链模式结构责任链模式适用场景责任链模式优缺点练手题目题目描述输入描述输出描述题解 责任链模式 责任链模式&#xff0c;亦称职责链模式、命令链&#xff0c;是一种行为设计模式&#xff0c;允许你将请求沿着处理者链进行发送。收到请求后&#xff0c;每…

韩顺平0基础学java——第36天

p715-735 反射调用速度慢 反射调用优化-关闭访问检查 1. Method和Field、Constructor对象都有setAccessible() 方法2. setAccessible作用是启动和禁用访问安全检查的开关 3&#xff0e;参数值为true表示反射的对象在使用时取消访问检查&#xff0c;提高反射的效率。参数值 为…

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis&#xff0c;买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋&#xff0c;可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …

2024-07-22 Unity AI行为树1 —— 框架介绍

文章目录 1 行为树2 行为树驱动方式3 行为树结点分类3.1 控制节点3.2 执行节点 4 行为树与状态机比较 本文章参考 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 行为树 ​ 行为树&#xff08;Behavior Tree&#xff0c;BT&#xff09;在游戏 AI 中是一种用于控制…

精益管理意识与企业战略规划的匹配度如何评估?

众所周知&#xff0c;精益管理不仅要求企业在生产运营过程中实现资源的最大化利用&#xff0c;同时也强调企业战略规划的精准性和前瞻性。因此&#xff0c;评估精益管理意识与企业战略规划的匹配度&#xff0c;对于企业的长期发展至关重要。具体方法如深圳天行健企业管理咨询公…

springboot 项目整合 AI (文心一言)

百度智能云网址&#xff1a;https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步&#xff1a;点击千帆大模型平台 ​ 第二步&#xff1a;点击应用接入——创建应用 ​ 第三步&#xff1a;点击接口文档——API列表——可以点击指定模型进行查看调…

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.4数据架构

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

hamcrest 断言框架使用示例和优势分析

引言 在软件测试领域&#xff0c;断言是验证代码行为是否符合预期的关键环节。Hamcrest 断言框架&#xff0c;以其独特的匹配器&#xff08;Matcher&#xff09;概念和清晰的失败信息&#xff0c;赢得了广泛的赞誉。尽管 Python 标准库中没有内置的 Hamcrest 库&#xff0c;但…

【前端新手小白】学习Javascript的【开源好项目】推荐

目录 前言 1 项目介绍 1.1 时间日期类 1.2 网页store类 1.3 事件类 1.4 Number类 1.5 String类 1.6 正则验证类 1.7 ajax类 1.8 data数据类 1.9 browser浏览器类 2 学习js-tool-big-box开源项目时有哪些收获 2.1 你可以这样做 2.2 如果你需要使用本项目 2.3 你…

开局一个启动器:从零开始入坑ComfyUI

前几天刷某乎的时候看到了一位大佬写的好文&#xff0c;可图 IP-Adapter 模型已开源&#xff0c;更多玩法&#xff0c;更强生态&#xff01; - 知乎 (zhihu.com) 久闻ComfyUI大名&#xff0c;决定试一下。这次打算不走寻常路&#xff0c;不下载现成的一键包了&#xff0c;而是…