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_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 工具时,您还会看到它。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】栈的实现(数据结构)

前言: 还是举一个生活中的例子,大家都玩过积木,当我们把积木叠起来的时候,如果要拿到最底部的积木,我们必须从顶端一个一个打出,最后才能拿到底部的积木,也就是后进先出(先进后出&a…

项目的小结

1.实现实时聊天 1.服务端建立一个ConcurrentHashMap<> 用来存储在线用户&#xff0c;用户账号和socket然后&#xff0c;如果有个人发了信息&#xff0c;就去数据库中查询&#xff0c;然后根据这个在线用户进行传递信息 服务端框架&#xff1a; public class ServerMain {…

系统架构设计师教程 第4章 信息安全技术基础知识-4.3 信息安全系统的组成框架4.4 信息加解密技术-解读

系统架构设计师教程 第4章 信息安全技术基础知识-4.3 信息安全系统的组成框架 4.3 信息安全系统的组成框架4.3.1 技术体系4.3.1.1 基础安全设备4.3.1.2 计算机网络安全4.3.1.3 操作系统安全4.3.1.4 数据库安全4.3.1.5 终端安全设备4.3.2 组织机构体系4.3.3 管理体系4.4 信息加…

Ubuntu 22.04.4 LTS (linux) Tomcat 项目部署

1 war包直接放在tomcat webapps 下面 2 修改server.xml &#xff0c;改成自定义目录 sudo vim /data/tomcat/conf/server.xml <Host name"localhost" appBase"webapps" --> <Host name"localhost" appBase"" <Conte…

今日分享丨用双钻模型设计中后台产品

随着C端市场的快速进化&#xff0c;用户的审美标准与产品体验认知均达到了前所未有的高度&#xff0c;这一转变深刻影响了用户对B端产品的期待。在面对B端产品时&#xff0c;用户不自觉地以C端产品的优质体验为参照&#xff0c;希望产品不仅能高效完成工作任务&#xff0c;同时…

收藏:高性价比https证书

在当今的数字化世界中&#xff0c;网络安全已经成为了每个网站所有者的首要关注点&#xff0c;为了保护网站的安全&#xff0c;防止数据被窃取或篡改&#xff0c;使用SSL证书已经成为了一种标准的做法&#xff0c;SSL证书是一种用于加密网站和用户之间数据传输的证书&#xff0…

easyExcel和poi的版本对应

easypoi3.0.5对应的poi版本_easypoi和poi版本对应-CSDN博客 https://github.com/alibaba/easyexcel/blob/v3.2.0/pom.xml 解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错-CSDN博客 参考这个文档解决的- 引入最佳版本是3.15版本 java.lang.NoClas…

ubuntu一些好用的开发工具及其配置

1 终端模糊搜索fzf https://github.com/junegunn/fzf 输入某命令&#xff0c;比如 conda &#xff0c;按下ctrlR&#xff0c;会显示和该命令匹配的历史命令的列表 有了这个工具再也不用记忆太复杂的命令&#xff0c;只需要知道大概几个单词&#xff0c;输入即可搜索。 其搜索…

可见性::

目录 定义&#xff1a; 解决方法&#xff1a; ①使用synchronized实现缓存和内存的同步 修改一&#xff1a; 加入语句&#xff1a; 代码&#xff1a; 修改2&#xff1a; 在代码块中加入&#xff1a; 代码&#xff1a; 执行结果&#xff1a; 原因&#xff1a; ②使用…

RPA软件-影刀使用

流程自动化 影刀将操作进行抽象&#xff0c;分为一下几个对象&#xff1a; 网页自动化 &#xff08;1&#xff09; 网页自动化应用场景&#xff1a;网页操作、数据抓取 &#xff08;2&#xff09; 网页操作&#xff1a;基础操作-指令操作&#xff0c;智能操作-关联元素&#…

PTrade常见问题系列15

某容器占用内存很高需要关闭处理&#xff1f; 1、若只是关闭部分进程&#xff0c;则需要进入容器后top -b 排序出资源占用消耗最高的几个进程&#xff0c;通过kill -9的方式进行清理&#xff1b; 2、若要关闭对应容器&#xff0c;则在管理端勾选后进行关闭容器操作或者在后台执…

【学习笔记】解决Serial Communication Library编译问题

【学习笔记】解决编译 Serial Communication Library 时的 Catkin 依赖问题 Serial Communication Library 是一个用 C 编写的用于连接类似 rs-232 串口的跨平台库。它提供了一个现代的 C 接口&#xff0c;它的工作流程设计在外观和感觉上与 PySerial 相似&#xff0c;但串口速…

本地化部署一个简单的AI大模型,Llama3.1

7 月 23 日消息&#xff0c;Meta 今晚正式发布llama3.1&#xff0c;提供 8B、70B 及 405B 参数版本。 Meta 称 4050 亿参数的 Llama 3.1-405B 在常识、可引导性、数学、工具使用和多语言翻译等一系列任务中&#xff0c;可与 GPT-4、GPT-4o、Claude 3.5 Sonnet 等领先的闭源模型…

KETTLE运行出现乱码和无法执行问题及解决方案

一、乱码问题 &#xff08;1&#xff09;出现乱码&#xff0c;在数据库连接里面的选项里面加入&#xff1a;characterEncodingutf8和tinyInt1isBitfalse &#xff08;2&#xff09;取消简易转换&#xff0c;点开表输入&#xff0c;取消”允许简易转换”选项&a…

学习笔记:MySQL数据库操作5

1. 触发器&#xff08;Triggers&#xff09; 触发器是数据库的一种高级功能&#xff0c;它允许在执行特定数据库操作&#xff08;如INSERT、UPDATE、DELETE&#xff09;之前或之后自动执行一段代码。 1.1 创建商品和订单表 商品表&#xff08;goods&#xff09; gid: 商品编号…

【LeetCode:3098. 求出所有子序列的能量和 + 记忆化缓存】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

c++ 内存管理(newdeletedelete[])

因为在c里面新增了类&#xff0c;所以我们在有时候会用malloc来创建类&#xff0c;但是这种创建只是单纯的开辟空间&#xff0c;没有什么默认构造的。同时free也是free的表面&#xff0c;如果类里面带有指针指向堆区的成员变量就会free不干净。 所以我们c增加了new delete和de…

22、Python之面向对象:万类霜天竞自由

引言 虽然&#xff0c;截止目前从来没有系统性地讲述面向对象的内容&#xff0c;但是阅读过前面文章的童鞋&#xff0c;关于Python中的面向对象应该有如下观念了&#xff1a; 1、Python中一切皆对象&#xff0c;对象有三个核心内容&#xff1a;id、类型、值。 2、Python中的…

2024 微信小程序 学习笔记 第二天

1. WXML 模板语法 数据绑定 事件绑定 条件渲染 列表渲染 2. WXSS 模板样式 rpx 样式导入 全局和局部样式 3. 全局配置 window tabBar 配置tabBar案例 4. 网络数据请求 Get请求 Post 请求 加载时请求 5. 案例 -本地生活&#xff08;首页&#xff09; 导航栏 轮播图 九宫格效果…

设计模式--创建型

实现 #include <iostream> #include <memory>// 抽象产品类 class Product {public:virtual ~Product() {}virtual void Operation() const 0; };// 具体产品 类A class ConcreteProductA : public Product {public:virtual void Operation() const override {st…