当前位置: 首页 > news >正文

【Go】Go语言开发环境安装

【Go】Go语言开发环境安装

导入

安装环境:Winowds

我现在是win7安装的,与win10整体步骤是一样的,只是部分显示的时候有点差异不影响;

【名词】

编译器:先将代码编译成可执行文件,再执行; —全文翻译

适用语言:

  • C
  • C++
  • Java
  • Go

解释器:不用将代码编译,直接可以执行; —实时翻译

适用语言:

  • Python
  • PHP
  • JavaScipt
  • Ruby

资源

官网:https://golang.google.cn/dl/论坛:https://studygolang.com/

官网首页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cpwzMXGo-1678612696558)(【Go】Go语言开发环境安装.assets/1678502719765.png)]

Windows的安装包
在这里插入图片描述

当前最新的版本: go1.20.2

安装

安装

安装完成
在这里插入图片描述

查看安装文件

测试验证切换路径至bin文件夹下:

执行命令:go version

log :

D:\software_install\Go\bin>go version
go version go1.20.2 windows/amd64

配置环境变量

**目的:**便于后期go编译器的运行,无需手动指定go 的安装位置;

方法:

计算机—属性—高级系统设置—环境变量,进来的时候发现已经配置了,可能是现在的版本安装内置功能实现环境变量的配置了,那就不用我们大刀阔斧的乱操作了
在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uCtZ3B3z-1678612696565)(【Go】Go语言开发环境安装.assets/1678504622104.png)]
在这里插入图片描述

随便切换一路经,试试环境变量配置是对不对,一顿简单操作下。

查看安装版本

C:\Users\ws>go version
go version go1.20.2 windows/amd64

查看环境

检查go环境

go env

E:\GoProject\src\utils>go env
set GO111MODULE=auto
set GOARCH=amd64
set GOBIN=E:\GoProject\bin
set GOCACHE=C:\Users\ws\AppData\Local\go-build
set GOENV=C:\Users\ws\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=E:\GoProject\pkg\mod
set GONOPROXY=

其他配置

创建一个目录

这个目录作用:后期关于go的所有项目资源与源码都存放在这个位置,便于代码的管理;

接下来做更精细的划分,再创建三个文件夹bin, pkg,src;

E:\GoProject- bin- pkg- src解释:
bin : 执行`go install`生成的exe文件的路径
pkg : 执行`go install`生成的包文件会存放在pkg文件夹下【下面有介绍】

src:这里存放的都是项目及其源码, 第一个项目:资管系统, 第二个:运营系统

- assetmanage.go
- businessopr.go

环境变量配置

GOBIN

GOPATH

GOROOT

简单解释下上面的环境变量们:

GOBIN : 用例保存go install生成的exe文件的路径、 可执行文件路径;

GOPATH:用来指定开发项目所在地址, 工作 路径;

GOROOT: 用来指定 go 的安装路径。
在这里插入图片描述

代码测试

编写

在E:\GoProject\src下面新建一个项目,名称为first, 再在项目下建立一个文件app.go:

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

运行

切换至app.go所在路径:

方法1:

命令运行

执行命令go run app.go运行项目:

E:\GoProject\src\first>go run app.go
hello go

方法2:

编译运行

执行命令:

go build

运行的时候出现了一些小的插曲:

E:\GoProject\src\first>go build
go: go.mod file not found in current directory or any parent directory; see ‘go help modules’

接下来我们就逢山开路遇水搭桥,遇到问题就去勇敢的面对它,并解决之;

原因分析:
go 的环境配置问题。与 golang 的包管理有关。

解决方案:
如果你是 Windows 系统,快捷键 “Win+R”,输入cmd,打开终端。输入:

go env -w GO111MODULE=auto

解释:
GO111MODULE 是 Go 1.11 引入的新版模块管理方式 ,在1.12版本中正式支持,它是Go语言官方提供的包管理解决方法。

GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。

  • GO111MODULE=off
    无模块支持 ,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

  • GO111MODULE=on
    模块支持 ,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 也可以解释成go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。

  • GO111MODULE=auto

    默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
    (1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
    (2)当前文件在包含go.mod文件的目录下面。

    在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。

Go mod使用方法
//初始化模块:
Go mod init <项目模块名称>//依赖关系处理,根据go.mod文件
Go mod tidy//将依赖包复制到项目的vendor目录
Go mod vendor//显示依赖关系
Go list -m all//显示详细依赖关系
Go list -m -json all//下载依赖
Go mod download [path@version]

然后再来继续:go build

E:\GoProject\src\first>go build

E:\GoProject\src\first>

这次就没有报错了,看看我们执行完这个命令后发生了什么变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3hVZd7a-1678612696570)(【Go】Go语言开发环境安装.assets/1678606866132.png)]

E:\GoProject\src\first项目目录下生成了一个以项目名,命名的可执行文件first.exe,点击运行一下看看有啥变化,发现终端闪现了一下就迅速的退出了,这条路走不通,我们先换条路走,在终端切换至first.exe文件所在路径,执行如下:

E:\GoProject\src\first>first.exe
hello go

这次很清晰的看到控制台输出的结果就是我们想看到的数据;

补充:

刚才双击exe文件闪现的原因:

1.主要是命令执行太快,执行结束后,生命周期也结束了,终端自然就退出了;通过cmd命令终端这个问题就可以避免了,如果实现想通过双击实现exe文件的运行,需要稍微加一下等待,代码可以这样改:

package mainimport "fmt"
import "time"func main(){fmt.Println("hello go")time.Sleep(5 * time.Second)
}

build指定名称

刚才使用的命令是go build生成的exe文件名就是项目命名的,如果需要指定名称则加入一个参数-o xxx.exe

E:\GoProject\src\first>go build -o  aaaE:\GoProject\src\first>aaa
'aaa' 不是内部或外部命令,也不是可运行的程序
或批处理文件。E:\GoProject\src\first>go build -o  aaa.exeE:\GoProject\src\first>aaa.exe
hello goE:\GoProject\src\first>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WoIpNKsD-1678612696572)(【Go】Go语言开发环境安装.assets/1678608302838.png)]

上面方式1与方式2两种运行方式本质上是相同;

方式3:

执行命令:

go install

在这里插入图片描述

在bin文件夹生成了first.exe,这个时候就正好可以介绍下刚才我们为什么建这个文件夹,并配置环境变量了,目的就在于此,go install 的时候生成的exe文件存放在bin文件夹下;

pkg

1.在E:\GoProject\src\utils 新建文件tools.go

package utilsfunc add(n1 int,n2 int)(ret int){return n1 + n2
}

2.执行cmd:go install

3.会在E:\GoProject\pkg\windows_amd64生成utils.a文件
在这里插入图片描述

go build、go install 区别

go build、go install 命令都是可生成可实行文件,了解它们的小区别以选择适合自己的。

go install 和 go build 在没有参数时运行,都会在当前目录下编译,如果当前目录是软件主程序(package main)

go build 会生成可实行文件放在当前目录中
go install 则会把它放到 $GOPATH/bin 中。
go install 还会把导入的依赖包编译到 $GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。 go build 命令加参数 -i 也能达到go install 的效果。

如果当前目录是非主包,则go install 直接把编译结果安装到 $GOPATH/pkg。

如果项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分利用它对依赖包的缓存功能

总结

1.载go编译器;

2.安装;

3.在安装目录下就是go编译器相关的所有内容。

在安装命令下有bin目录中有一个go可执行文件,基于它来启动编译器。

  • 直接可以找到路径去找到它,然后运行,有点麻烦。
  • 将go的可执行文件添加到环境变量中,在任何位置打开命令终端都可以顺利运行。(这也是多数开发语言都要做的一个环境变量配置的操作,一次配置永久有效,前提是不重新安装系统,比如在java,python, node)

基于上面的设置,尽管可以实现go的开发,

如果想更方便的使用go编译器,还需要做进一步的设置:

  • 创建命令

    用于存放代码、编译后的可执行文件、编译后的包文件。

    xxx- bin- pkg- src
  • 环境变量

    GOBIN : 用例保存编译后生成的可执行文件的路径;GOPATH:用来指定开发项目所在地址, 编译后的可执行文件、包文件, 工作路径;GOROOT: 用来指定 go 的安装路径。
    

编写代码,然后运行

写了两个项目:

  • first 编译后生成可执行文件
  • utils 编译后生成包文件

运行项目

  • go run xxx.go : 运行项目代码,内部会先编译并将编译后的文件放在系统的临时目录,然后再自动执行;
  • go build: 运行项目代码,手动编译并生成一个可执行文件,然后再自动运行。
  • go install:生成可执行文件+包文件,并且会将编译后的文件放在bin or pkg 目录下。

相关文章:

【Go】Go语言开发环境安装

【Go】Go语言开发环境安装 导入 安装环境&#xff1a;Winowds 我现在是win7安装的&#xff0c;与win10整体步骤是一样的&#xff0c;只是部分显示的时候有点差异不影响&#xff1b; 【名词】 编译器&#xff1a;先将代码编译成可执行文件&#xff0c;再执行&#xff1b; —…...

el-switch使用

效果图&#xff1a; 1.表格代码&#xff0c;给el-waitch加上change事件 <el-table-column prop"status" label"状态" align"center" width"150"> <template slot-sc…...

【算法入门】字符串基础

目录 一.字符串引言1.字符串基础二.洛谷P5734详解1.字符串相关库函数&#x1f4ab;&#xff08;1&#xff09; strcpy函数 &#x1f4ab;&#x1f4ab;&#xff08;2&#xff09; strcat函数 &#x1f4ab;&#x1f4ab;&#xff08;3&#xff09;strstr函数 &#x1f4ab;2.题…...

前端面试题 —— 浏览器原理(二)

目录 一、有哪些可能引起前端安全的问题? 二、网络劫持有哪几种&#xff0c;如何防范&#xff1f; 三、浏览器渲染进程的线程有哪些 四、僵尸进程和孤儿进程是什么&#xff1f; 五、为什么需要浏览器缓存&#xff1f; 六、对浏览器的理解 七、CSS 如何阻塞文档解析&…...

对于植物神经紊乱的治疗 中医采用辩证论治的方法

植物神经紊乱是由于心理压力过大、长期生活不规律所导致的一种疾病&#xff0c;这种疾病的发生往往是症状多样、涉及广泛的。当患有植物神经紊乱之后&#xff0c;主要的症状会以躯体化障碍为常见症状&#xff0c;但是很多患者还会出现情绪失控、睡眠障碍等问题。 对于植物神经紊…...

chatGPT之Python API启用上下文管理

chatGPT已经爆火一段时间了&#xff0c;我想大多数的开发者都在默默的在开发和测试当中&#xff0c;可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧。为什么别人的机器人能联想之前的语料&#xff0c;而你的却像个每次都只如初见的高冷机器人&…...

油田钻井实时在线监测系统

油田钻井的井下油层的压力不断变化&#xff0c;环境深度和压力巨大&#xff0c;且井下原油具有一定的流动性&#xff0c;实时在线压力监测是石油开采行业的难点。为更好地了解油田开采过程中油层的状况&#xff0c;提高油田开采效率和产量&#xff0c;油田钻井实时在线监测系统…...

经典PID控制算法原理以及优化思路

文章目录0、概念1、理解2、实现3、优化4、引用0、概念 PID算法是工业应用中最广泛算法之一&#xff0c;在闭环系统的控制中&#xff0c;可自动对控制系统进行准确且迅速的校正。PID控制&#xff0c;即Proportional – Integral(I) – Derivative(D) Control, 实际上是三种反馈…...

经典面试题之赋值和深浅拷贝的区别

1.区别 **赋值&#xff1a;**基本数据直接拷贝&#xff0c;互不影响&#xff0c;引用数据把地址赋值给新对象&#xff0c;新旧对象指向同一个地址。 **浅拷贝: **基本类型之间互不影响&#xff0c;对象只会复制对象的第一层基本数据和引用类型的地址&#xff0c;对象内部嵌套的…...

电子取证的电脑配置有关问题,以我仅有的知识为大家建议一下。

电子取证火力很重要&#xff0c;用轻薄本是没法取证的&#xff0c;所以至少是全能本或者是游戏本&#xff0c;牛逼的选手上台式&#xff0c;参考浙警许专家&#xff0c;yyds我专家&#xff01; 我从实战出发&#xff0c;参考历年“美亚杯”和“长安杯”比赛&#xff0c;给大家…...

【基础算法】单链表的OJ练习(5) # 环形链表 # 环形链表II # 对环形链表II的解法给出证明(面试常问到)

文章目录前言环形链表环形链表 II写在最后前言 本章的OJ练习相对于OJ练习(4)较为简单。不过&#xff0c;本章的OJ最重要的是要我们证明为何可以这么做。这也是面试中常出现的。 对于OJ练习(4)&#xff1a;-> 传送门 <-&#xff0c;分割链表以一种类似于归并的思想解得&a…...

MySQL 基础教程[13]

MySQL 基础教程[13]问题1问题1代码问题2问题2代码本系列MySQL 基础教程通过“问题-代码”的方式介绍各类方法&#xff0c;每篇设置2个MySQL综合问题&#xff0c;并给出解决方案。 问题1 kwgl数据库中有学生基本信息表student和系别表dept。表结构及说明如下: student (sid, s…...

个人练习-Leetcode-826. Most Profit Assigning Work

题目链接&#xff1a;https://leetcode.cn/problems/most-profit-assigning-work/ 题目大意&#xff1a;给出一串任务&#xff0c;difficulty表示任务难度&#xff0c;profit表示任务的收益&#xff08;以下简称diff和pro&#xff09;。给出一串工人的能力worker。每个工人只能…...

云原生周刊:边缘计算会吞噬云吗?| 2023.3.13

文章推荐 边缘计算吞噬云&#xff1f; 这篇文章讨论了边缘计算对传统云计算的潜在冲击。 边缘计算是一种新型的计算架构&#xff0c;它将计算移动到离数据源和终端设备更近的地方&#xff0c;从而提供更快的响应时间和更好的用户体验。相比之下&#xff0c;云计算是一种集中…...

python+django+vue图书个性化推荐系统

整个系统是由多个功能模块组合而成的&#xff0c;要将所有的功能模块都一一列举出来&#xff0c;然后进行逐个的功能设计&#xff0c;使得每一个模块都有相对应的功能设计&#xff0c;然后进行系统整体的设计。 本图书个性化推荐系统结构图如图python manage.py runserver 开…...

经典文献阅读之--LIO-PPF(增量平面预拟合LIO)

0. 简介 自从ikd-tree出来后&#xff0c;现在越来越多的工作瞄准了增量式这种方法&#xff0c;比如说激光惯导里程计&#xff08;LIDAR-Inertial Odometry&#xff0c;LIO&#xff09;的高精度跟踪通常涉及最小化点到平面距离的k最近邻&#xff08;kNN&#xff09;搜索&#x…...

ChatGPT背后有哪些关键技术?CSIG企业行带你一探究竟

目录1 ChatGPT的时代2 CSIG企业行3 议题&嘉宾介绍3.1 对生成式人工智能的思考3.2 对话式大型语言模型研究3.3 文档图像处理中的底层视觉技术4 观看入口1 ChatGPT的时代 2015年&#xff0c;马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始…...

C#基础之面向对象编程(二)

总目录 文章目录总目录前言一、概述1. 定义2. 面向对象的三大特性二、封装1. 定义2. 属性三、继承1. 定义2. 继承的使用3. base 和this四、多态1. 定义2. 重写和重载3. 多态性的实现1、静态多态性2、动态多态性4. 向上转型和向下转型1、定义2、语法格式3、案例结语前言 本文主…...

蓝桥杯刷题冲刺 | 倒计时25天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.完全二叉树1.完全二叉树 题目 链接&#xff1a; 完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 给…...

c语言—动态内存管理

一.为什么存在动态内存开辟开辟空间的特点&#xff1a;空间开辟大小是固定的数组在申明时&#xff0c;必须指定数组长度&#xff0c;她所需要的内存在编译时分配但是对于空间的需求&#xff0c;不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道&#xff…...

请说明Ajax、Fetch、Axios三者的区别

相同点&#xff1a; 1、三者都用于网络请求&#xff0c;但是不同维度 2、 Ajax(Asynchronous Javascript and XML)&#xff0c;一种技术的统称&#xff0c;并不是实际的API 3、Fetch是一个具体的API&#xff0c;浏览器里面直接有一个API就叫Fetch 4、 Axios是一个第三方库&…...

阿里p8测试总监,让我们用这份《测试用例规范》,再也没加班过

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 固然&#xff0c;编写一份好的测试用例需要&#xff1a;充分的需求分析能力 理论及经验加持&#xff0c;作为测试职场摸爬打滚的老人&…...

【Unity】数据持久化路径Application.persistentDataPath

今天突然想到这个路径Application.persistentDataPath&#xff0c;热更的重要路径&#xff0c;该文件夹可读可写&#xff0c;在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源&#xff08;资源MD5值配置表&#xff09;等一些文件放到StreamingAssets文件夹下&#…...

华为OD机试 - 插队(Java JS Python)

题目描述 某银行将客户分为了若干个优先级, 1 级最高, 5 级最低,当你需要在银行办理业务时,优先级高的人随时可以插队到优先级低的人的前面。 现在给出一个人员到来和银行办理业务的时间序列,请你在每次银行办理业务时输出客户的编号。 如果同时有多位优先级相同且最高…...

MongoDB数据库从入门到精通系列之八:调整oplog大小

MongoDB数据库从入门到精通系列之八:调整oplog大小 一、oplog的概念二、oplog大小三、调整oplog大小详细步骤一、oplog的概念 操作日志oplog包含了主节点执行的每一次写操作。oplog是存在于主节点local数据库中的一个固定集合。从节点通过查询此集合以获取需要复制的操作。每个…...

PCL 间接平差法拟合二维直线

目录 一、算法原理二、代码实现三、结果展示四、相关链接一、算法原理 通过传统最小二乘法对点云数据进行二维直线拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 y y y轴方向上,设点云拟合的二维直线方程为: y =...

进程调度的基本过程

这里写目录标题什么是进程进程管理结构体或类的主要属性pid内存指针文件描述符表辅助进程调度的属性并发并行并发什么是进程 进程是操作系统对一个正在运行的程序的一种抽象&#xff0c;也就是说&#xff0c;一个运行起来的程序就是一个进程。 进程又是操作系统进行资源分配的…...

python自动化办公(二)

上接python自动化办公&#xff08;一&#xff09; 文章目录文件和目录操作使用shutil库文件查找globfnmatchhashlib文件和目录操作 使用shutil库 shutil库也是Python标准库&#xff0c;它可以处理文件、文件夹、压缩包&#xff0c;能实现文件复制、移动、压缩、解压缩等功能。…...

Qt Quick - GridLayout 网格布局

GridLayout 理论总结一、概述二、依赖属性三、例子1. 不含跨行的2. 带跨行列的3. 从右到左一、概述 GridLayout 是最常用的布局器&#xff0c;也叫网格布局器&#xff0c;如果网格布局被调整大小&#xff0c;布局中的所有 Item 将被重新排列。它类似于基于widget的QGridLayout…...

安卓手机也可以使用新必应NewBing

没有魔法安卓手机也可以使用新必应NewBing 目前知道的是安卓手机 安卓手机先安装一个猴狐浏览器 打开手机自带浏览器&#xff0c;搜索关键词&#xff1a;猴狐浏览器&#xff0c;找到官网 也可以直接复制这个网址 狐猴浏览器 lemurbrowser CoolAPK 我的手机是荣耀安卓手机…...

昆明网页建站模板/seo初学教程

阿里巴巴算法、数据工程师笔试题 **1、**有三个结点的&#xff0c;可以构成多少个种叉树&#xff1f; **2、**一副牌52张(去掉大小王)&#xff0c;从中抽取两张牌&#xff0c;一红一黑的概率是多少&#xff1f; 编程题&#xff1a; **3、**设计一个最优算法来查找一n个元素…...

专业做消防工程师的正规网站/深圳网站关键词优化推广

2019独角兽企业重金招聘Python工程师标准>>> 以项目名为myTest,当前类名为test(其中package com.sun.app)&#xff0c;test.txt为test同目录下为例&#xff1a; 全路径&#xff1a; 1.当前类test.class文件的URI目录 URL url test.class.getResource("")…...

注册公司去哪个网站/今日刚刚发生的重大新闻

前言 众所周知&#xff0c;Xamarin应该是.net下的跨平台开发工具。2016年之前还处于收费状态&#xff0c;后被微软收购后开源。但似乎有个现象&#xff0c;开源后的Xamarin发展似乎有些停滞&#xff0c;而且维护Xamarin的团队又很固执不愿变通。社区多次建议UI层应该统一绘图引…...

广州商城网站建设报价/百度app客服电话

一、Context 全局的环境对象,提供了很多方便的操作&#xff0c;帮助我们快速的获取数据,进行一些常规的操作。 1.1、获取路径 getFilesDir()等同于/data/data/包名/files/ File file new File(getFilesDir(),"info.txt"); 1.2、缓存文件路径 getCacheDir()等同于/da…...

如何安装wordpress软件/网络营销工资一般多少

02 JVM 线程JVM内存区域JVM运行时内存垃圾回收与算法JAVA四种引用类型GC分代收集算法 VS 分区收集算法GC垃圾收集器JAVA IO/NIOJVM类加载器 03 JAVA集合 接口继承关系和实现LISTSETMAP 04 JAVA多线程并发 JAVA并发知识库JAVA线程实现/创建方式4种线程池线程生命周期&#xf…...

网站备案步骤/2345网址大全下载到桌面

1、使用异步任务加载网络上的图片 我们可以打开这个网址&#xff1a;http://img1.3lian.com/img2011/07/20/05.jpg可以看到一副很好看的图片&#xff0c;我们就要把这个图片显示出来&#xff0c;首先&#xff0c;还是先要布局&#xff0c;我们要显示一幅图片&#xff0c;所以我…...