【go从入门到精通】go环境安装和第一个经典程序

go下载和环境变量配置

下载地址

Go官网下载地址:https://golang.org/dl/All releases - The Go Programming Languagehttps://golang.org/dl/ 

然后根据自己的系统环境来选择不同的安装包下载,下面我分别针对不同环境进行说明(大家可以根据自己的需要来选择安装不同的版本,这里我用的是go1.18.3版本,当然你们可以选择最新版本):

Windows安装和GOPATH配置

1.点击下载的msi安装包:

设置安装路径为:C:\Program Files\Go\bin

2.配置gopath 

GOPATH是一个环境变量,用来表明你写的go项目的存放路径

GOPATH路径最好只设置一个,所有的项目代码都放到GOPATHsrc目录下。

Linux和Mac平台就参照上面配置环境变量的方式将自己的工作目录添加到环境变量中即可。 Windows平台按下面的步骤将(你的安装目录,例如:C:\Program Files\Go\bin)添加到环境变量:

 我的电脑->属性->高级系统设置->环境变量

 接着我们查看PC的用户变量或者下面的系统变量查看是否有GOPATH变量名(这个配置的是go工程的路径),如果没有则新建一个:

我们看下这个目录下都有哪些文件:

同时在path里面添加go的安装目录(我的是C:\Program Files\Go\bin

3.检查go版本和环境变量:

Linux下安装和GOPATH配置

1.进入/usr/local目录进行下载安装包

cd /usr/local
wget https://go.dev/dl/go1.18.3.linux-amd64.tar.gz

2.下载成功后,解压压缩包:

tar -zxvf go1.18.3.linux-amd64.tar.gz

3.建立Go的工作空间

Golang 工作空间 :编译工具对源码目录有严格要求,每个工作空间 (workspace) 必须由 bin、pkg、src 三个目录组成。

Go tool 被设计成用来开源公共仓库中的代码,尽管或许你不需要发布你的代码, 但是环境的设置还是一样的。

Go的源代码必须存放在 workspace中。 workspace 是一个目录(directory hierachy),在这个目录下有三个子目录

  • src 包含 Go 源代码文件, 源代码文件组织成 packages (one package per directory)
  • pkg 包含 package objects (二进制的包)
  • bin 包含 可执行的命令 command(可执行的二进制文件)

go tool 编译(build) 源代码文件(source packages),并且将 resulting binaries 安装在 pkg 和 bin 目录下面。

src 目录下面包含多个 版本控制的仓库, (比如 Git 或者 Mercurial) 用来 跟踪一个或者多个 source package的开发进度。

这里,我们在/home目录下, 建立一个名为goworkspace的文件夹,
然后再建立三个子文件夹(子文件夹名必须为src、pkg、bin)。

4.添加PATH环境变量

vi /etc/profile

加入下面这三行:

export GOROOT=/usr/local/go  ##go安装目录          
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/goworkspace  ##go项目目录

保存后,执行以下命令,使环境变量立即生效:

source /etc/profile

至此,Go语言的环境已经安装完毕。

5.验证go环境

[root@izm5ee12oyxxwqdlq5bj8wz data]# go version
go version go1.18.3 linux/amd64

6.查看Go语言的环境信息

go env

Mac下安装

mac上直接下载 https://go.dev/dl/go1.18.3.darwin-amd64.pkg 然后安装即可,配置环境变量的方式和方法和Linux类似

vim  ./bash_profile

配置参数也参考linux的参数,最后 source ./bash_profile

 

 

go编辑器使用

         你可以参考我之前的这篇文章 骨灰级程序的电脑上都安装过哪些编辑器?,在学习期间,你可以使用 vscode下载地址icon-default.png?t=N7T8https://code.visualstudio.com/Download,  以后我们的开发环境就使用vscode来进行编码了,这个是跨平台的,所以不管你是windows,linux还是mac平台,你都可以使用生成的工程来打开你的项目,这里就不费口舌来讲vscode的功能了,总之一个字”好用“。

安装go插件

启动vscode选择插件->搜go, 选择下面的图中的插件,点击安装即可(因为我已经安装过了,所以这里的提示如此)

     

安装go开发工具包

vscode里会为我们提供代码提示、代码自动补全等功能,这将提高我们的开发效率:ctrl+shift+P:

在输入框内输入go install-》选择Go:Install/Update Tools

然后选择全选:

git安装

         因为golang是通过git来管理远程包的,所以我们首先要安装git,下载地址:Git - Downloadsicon-default.png?t=N7T8http://www.git-scm.com/download/   git安装比较简单,这里不再费文字了,你可以参考网络上其他文章

第一个经典程序

假设我在下面这个目录创建一个hello的工程

(1)打开vscode,

选择目录:E:\project\go\hello

(2)在new创建一个main.go文件:

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

 

(3)在终端下执行编译

        如果你的vscode没有看到终端,你可以在最上面的菜单栏里找下Terminal,然后New Terminal就可以发现。

        终端下执行 go build .\main.go

   go编译器会在当前目录下查找你要编译的文件main.go,编译得到的可执行文件会保存在执行编译命令的当前目录下。

(4)在终端直接执行该hello.exe文件:

 结语:

           恭喜你,你已经具备了开发go的条件了,接下来我将分享

go基础:语法,函数,方法,面向对象,网络,并发编程,常用标准库,
框架: beego,gin,微服务
插件:文件读写,pprof性能调优,加解密,token,流控,数据库
实践项目:聊天室,游戏服务器
笔试面试题分析

其他。。。

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

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

相关文章

Platformview在iOS与Android上的实现方式对比

Android中早期版本Platformview的实现基于Virtual Display。VirtualDisplay方案的原理是,先将Native View绘制到虚显,然后Flutter通过从虚显输出中获取纹理并将其与自己内部的widget树进行合成,最后作为Flutter在 Android 上更大的纹理输出的…

Unity2023.1.19_ECS_DOTS

Unity2023.1.19_ECS_DOTS 盲学-盲目的学习: 懒着自己整理就看看别人整理的吧,整合一下逻辑通了不少: DOTS/data oriented technology stack-面向数据的技术栈 ECS/Entities-Component-System Unity-Entities包 Entities提供ECS架构面向数…

BUUCTF---[ACTF2020 新生赛]BackupFile1

1.题目描述 2.题目提示backup file ,是备份文件的意思。点开链接,页面提示 3.查看源码没有什么有用信息,也没有登录界面,所以也不会用到蚁剑链接来找备份文件,所以大概率就是通过构造playload来查找备份文件。 4.备份…

新手想玩硬件,买单片机还是树莓派好?

新手想玩硬件,买单片机还是树莓派好? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家&#x…

Springboot+vue的船舶监造系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的船舶监造系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的船舶监造系统,采用M(model)V&#xff…

二百二十六、Linux——shell脚本查看今天日期、昨天日期、30天前日期、1月前日期

一、目的 由于磁盘资源有限,因为对原始数据的保存有事件限制,因为对于超过一定期限的数据文件则需要删除,要实现定期删除则第一步就是查看日期时间 二、在Linux中创建shell脚本 #! /bin/bash source /etc/profile nowdatedate --date0 da…

Linux 学习笔记(11)

十一、 资源监控 1 、 free 内存监控 语 法&#xff1a; free [-bkmotV][-s < 间隔秒数 >] 补充说明&#xff1a; free 指令会显示内存的使用情况&#xff0c;包括实体内存&#xff0c;虚拟的交换文件内存&#xff0c;共享内存区段&#xff0c;以 及系统核心使用的…

[计算机网络]:流量控制

一、流量控制简介 一条TCP连接的每一侧主机都为其设置了接收缓存&#xff0c;当TCP成功连接后&#xff0c;它发送的数据会放入接受缓存中。相关联的进程会从缓存中读取数据。但是存在一个问题&#xff0c;当某应用程序读取数据速率太慢&#xff0c;而发送数据一方不停的发送数…

【数据结构】复杂度详解

目录 &#xff08;一&#xff09;算法的复杂度 &#xff08;二&#xff09;时间复杂度 &#xff08;1&#xff09;练笔解释&#xff1a; i&#xff0c;示例1 ii&#xff0c;示例2 iii&#xff0c;二分查找 iv&#xff0c;斐波那契 &#xff08;三&#xff09;空间复杂度…

英福康INFICON真空计MPG400MPG401使用说明PPT讲解课件

英福康INFICON真空计MPG400MPG401使用说明PPT讲解课件

Java解决杨辉三角

Java解决杨辉三角 01 题目 给定一个非负整数 *numRows&#xff0c;*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRo…

计网面试题整理下

1. HTTP常见的状态码有哪些&#xff1f; 常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&am…

前端面试 跨域理解

2 实现 2-1 JSONP 实现 2-2 nginx 配置 2-2 vue 开发中 webpack自带跨域 2 -3 下载CORS 插件 或 chrome浏览器配置跨域 2-4 通过iframe 如&#xff1a;aaa.com 中读取bbb.com的localStorage 1)在aaa.com的页面中&#xff0c;在页面中嵌入一个src为bbb.com的iframe&#x…

在全志V853平台上成功部署深度学习步态识别算法

北理工通信课题组辛喆同学在本科毕业设计《基于嵌入式系统的步态识别的研究》中&#xff0c;成功将深度步态识别算法GaitSet移植到全志V853开发板上。本研究在CASIA-B数据集上进行测试&#xff0c;正常行走状态下该系统的步态识别准确率达到了94.9%&#xff0c;背包行走和穿外套…

C++基于多设计模式下的同步异步日志系统day5

C基于多设计模式下的同步&异步日志系统day5 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&am…

C++:Vector的模拟实现

创作不易&#xff0c;感谢三连 &#xff01;&#xff01; 一&#xff0c;前言 在学习string类的时候&#xff0c;我们可能会发现遍历的话下标访问特别香&#xff0c;比迭代器用的舒服&#xff0c;但是下标其实只能是支持连续的空间&#xff0c;他的使用是非常具有局限性的&am…

第 125 场 LeetCode 双周赛题解

A 超过阈值的最少操作数 I 排序然后查找第一个大于等于 k 的元素所在的位置 class Solution { public:int minOperations(vector<int> &nums, int k) {sort(nums.begin(), nums.end());return lower_bound(nums.begin(), nums.end(), k) - nums.begin();} };B 超过阈…

C++ 位运算OJ

目录 1、 191. 位1的个数 2、 338. 比特位计数 3、 461. 汉明距离 4、136. 只出现一次的数字 5、 260. 只出现一次的数字 III 6、面试题 01.01. 判定字符是否唯一 7、 268. 丢失的数字 8、 371. 两整数之和 9、 137. 只出现一次的数字 II 10、面试题 17.19. 消失的两个…

【C++】二叉树进阶面试题(上)

目录 1. 二叉树创建字符串 题目 分析 代码 2. 二叉树的分层遍历1 题目 分析 代码 3. 二叉树的分层遍历2 题目 分析 代码 4. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 题目 分析 代码 5. 二叉树搜索树转换成排序双向链表 题目 分析 代码 1. …

使用GitHub API 查询开源项目信息

一、GitHub API介绍 GitHub API 是一组 RESTful API 接口&#xff0c;用于与 GitHub 平台进行交互。通过使用 GitHub API&#xff0c;开发人员可以访问和操作 GitHub 平台上的各种资源&#xff0c;如仓库、提交记录、问题等。 GitHub API 提供了多种功能和端点&#xff0c;以…