2023年最新无脑安装 Go lang 环境配置并编写、运行、打包第一个 Golang 程序详细步骤,附带图文教程

news2024/9/22 17:35:42

文章目录

      • 下载安装Golang
      • 配置 Golang 环境
        • GO111MODULE
        • GOPROXY
        • 开启 Go mod 模式及设置包下载国内镜像
        • 配置 Vscode Golang 环境
      • Bug 集锦
        • The "gopls" command is not available.Run "go get -v golang.org/x/tools/gopls" to install.

GO语言也称为Golang,由谷歌出品,随着云计算的发展而不断壮大,近年来,使用GO语言的程序员越来越多,GO程序员一般被称为GOpher。GO语言在语法上与C语言相类似,GO语言有以下的特点:

  1. 开源 ,开源免费是很多程序员选择GO语言的原因之一;
  2. 跨平台 ,可以在windows,Linux,MacOS等平台使用;
  3. 独具一格的面向对象编程方式 通过结构类型+关联方法来实现面向编程的能力;
  4. 网络功能丰富 这个要慢慢体会;
  5. 程序可以直接在谷歌的网站上运行 在go playground,可以直接编写代码或把自己的代码粘贴上,然后运行,所以可以在不安装任何软件的情况下使用GO语言,也可以在以下网站运行。https://play.studygolang.com/
  6. 并发编程简洁 ;
  7. 丰富的标准库 ;

由于博主硬盘空间较为充足,不考虑移动软件安装目录,需要者请自行寻找方法,本文为无脑操作。

下载安装Golang

下载地址:所有版本 - Go 编程语言 (google.cn)

image-20230510190956335

点击特色安装下的第一个,进行下载即可。下载完成之后,执行安装文件,全部点击下一步即可,打开 cmd 命令行,输入 go version 弹出版本号,安装成功。

配置 Golang 环境

GO111MODULE

我们可以简单的理解为,在没有go modules机制时,go工程中对于第三方功能包的管理非常复杂,也非常专业,这就导致程序员在进行开发的时候,对于第三方功能包的管理很不方便,所以才有了go modules机制。这个机制的开关是通过GO111MODULE环境变量来配置的。

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

GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。

GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

注:如果后面不需要使用,可以再将值设置为off。

GOPROXY

从字面意思就能看出,GOPROXY表示的是go的代理设置,之所以有这个环境变量,是因为go这种语言不像C语言,在C语言中,如果我们想要使用别人的第三方代码,一般有两种途径:

而在go语言中,类似于java,可以在编程时,引入第三方代码的库地址,比如git仓库,然后在编译的时候,IDE会自动的拉取第三方库文件到当前工程。
这样做虽然很方便,但是带来了一个问题:网速和限制
golang默认的GOPROXY是https://goproxy.io,这个是官方的设置,我们可以使用国内的代理,Windows下设置如下:,因为一些限制,我们不能很顺利的使用和下载这些仓库,这样就会导致下载缓慢或者失败,所以这个时候就需要一个代理来实现下载,这个代理就是中间商,可以跨过限制来访问。

golang默认的GOPROXY是 https://goproxy.io ,这个是官方的设置,我们可以使用国内的代理:https://goproxy.cn

开启 Go mod 模式及设置包下载国内镜像

  1. 打开高级系统设置

  2. 打开环境变量面板

    image

  3. 新建系统变量,变量名:GO111MODULE ;变量值:on

    image-20230510192528482

  4. 新建系统变量,变量名:GOPROXY ; 变量值:https://goproxy.cn

    image-20230510192546338

  5. 点击环境变量面板中的确认按钮以及高级系统设置确认按钮。

  6. 在 cmd 命令输入 go env,寻找对应变量是否设置成功,注意,不要使用设置环境变量前已打开的 cmd 窗口,存在缓存,极有可能显示设置不成功,需要新开一个 cmd 窗口,进行测试。

  7. 如果测试失败,请在 cmd 命令中分别输入

    • go env -w GOPROXY=https://goproxy.cn,direct
    • go env -w GO111MODULE=on

配置 Vscode Golang 环境

Vscode下载地址:https://vscode.cdn.azure.cn/stable/b4c1bd0a9b03c749ea011b06c6d2676c8091a70c/VSCodeUserSetup-x64-1.57.0.exe

  1. 执行安装文件,一直下一步即可完成安装。

  2. 打开 Vscode 软件,打开插件安装位置

    image(1)

  3. 搜索栏搜索 go 找到 Go 这个插件然后点击 Install 安装插件,如下图。

    image-20230510194640370

  4. 编写 HelloWord 程序进行测试

    点击 Vscode 最上面的按钮,选择 Open Folder 打开你想要的放置的代码目录,在 Vscode 中的目录文件夹的右边第一个,新建文件 hello.go,输入以下代码:

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("Hello Word!")
    }
    

    在放置代码的目录中打开 cmd 窗口:到对应文件夹的地址栏输入 cmd 即可打开 cd 到该文件夹的 cmd 窗口,输入run hello.go 出现 Hello,Word!即为运行成功。安装 Vscode 成功。

  5. 构建 hello 项目

    在刚刚打开的 cmd 命令窗口中输入 go build hello.go,会出现 hello.exe 文件,即为项目文件,输入 hello 即可运行该文件。

Bug 集锦

The “gopls” command is not available.Run “go get -v golang.org/x/tools/gopls” to install.

image-20230510195412123

点击 install all 即可。显示如下即可。

image-20230510195821870

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

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

相关文章

烽火HG680-J/V-Hi3798MV100-当贝纯净桌面-卡刷固件包

烽火HG680-J/V-Hi3798MV100-当贝纯净桌面-卡刷固件包 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件&…

【ArcGIS教程】批量裁剪

ArcGIS教程:批量裁剪 1 裁剪1.1 准备:创建shp文件/选定区域、自由选区1.1 单一裁剪1.2 批量裁剪(Batch) 2 批量裁剪参考 1 裁剪 1.1 准备:创建shp文件/选定区域、自由选区 步骤1: 创建shp文件 打开ArcCat…

2023年了,来体验下前端的测试方案

在当前的前端当中,有好多同学自己写的代码bugger横飞,怎么解决这个问题呢🤔🤔🤔?个人觉得主要有以下两个趋势 给前端的代码加上类型检查(ts)给前端代码编写单元测试和e2e测试 当然&a…

【C++】继承和多态、共有私有和保护、重写

区分继承与多态、辨别public、protected、private 继承与多态的概念继承与多态的区别与联系区别:联系:示例结果: 继承和访问的权限说明示例:结果 结论 继承与多态的概念 面向对象三大原则:封装、继承、多态。继承是一种…

【C++进阶1--继承】面向对象三大特性之一(附菱形继承讲解

继承是面向对象中很重要的特性,今天就来讲讲C中的继承。 文中不足错漏之处望请斧正! 什么是继承? 是一种类的复用,可以让B类继承,从而使B类获得A类的所有成员。 A类叫做父类或基类,B类叫做子类或派生类。…

C++ 构造函数-2

构造函数-2 构造函数体赋值 在对象创建的时候,编译器会调用构造函数,给对象当中的成员赋一个合适的初始值。 class Date { public: Date(int year, int month, int day) { _year year; _month month; _day day; } private: int _year; int _month; i…

Android framework工程师一定要知道的高级技巧

作为一名android framework工程师,你是否对Android framework的一些高阶使用技巧感到陌生?想了解更多的细节?如果是这样,那么就请你读下去。本篇文章我将为大家相信介绍Android framework的高阶技巧,帮助你成为一名高级…

【Nginx】【SSL】Nginx上配置ssl证书

配置需要有自己的域名和云主机;域名已经解析到主机;安装好Nginx 一、申请免费版的SSL证书 1、阿里云可以申请免费版的SSL证书 阿里云搜索 ssl 找到 数字证书管理服务/SSL 证书>免费证书;申请一个免费的 2、下载SSL证书到本地&#xf…

贝叶斯公式与全概率公式的理解。

1.贝叶斯与全概率公式解释 1.全概率公式定义 即若在某个场景下,可找到一个完备事件组 Ai ( i 1,2,3…n)。 则对任一与该场景有关的事件 B,都可以分割成无数个小事件(由不同因素引起的事件) 有:   B B ∩ A1 ∪ A2…

给你的项目启动提提速:Lazy Initialization

前言 在一个名为种花家的小镇上,生活着一群热爱编程的人。他们致力于构建出高效、可维护的软件系统,而 Spring Boot 框架成为了他们的不二之选。这个小镇上的人们每天都在用 Spring Boot 框架创造着令人瞩目的应用程序。 然而,随着时间的推移…

Java 学习之线程

1、引入线程的优点: 1)充分利用cup资源 2)简化编程模型 3)简化异步事件处理 4)使GUI更有效率 5)节约成本 2、线程使用:在Java中创建线程有几种方法,每个Java程序至少包含一个线…

软件工程开发文档写作教程(05)—可行性研究报告写作规范

本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:电子工业出版社《软件文档写作教程》 马平,黄冬梅编著 软件工程开发文档现状 一个软件项目从立项到结尾共有几个阶段:立项,…

动画图解常见串行通讯协议:SPI、I²C、UART、红外分析

一、SPI传输 图1:SPI 数据传输 图1.2:SPI数据传输(2) ​ 图1.3: SPI时序信号 二、IC传输 图1.2.1: I2C总线以及寻址方式 三、UART传输 图1.3.1:PC 上通过UART来调试MCU 图1.3.2:R…

深入探究语音识别技术:原理、应用与实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Qt-AES加密库

Qt-AES加密库 AES在线加解密工具[1] Qt-AES加密库[2] Qt AES/DES加密算法库 软件/文件/任意长度字符串加密 试用期许可使用方法软件试用期算法对称加密和非对称加密非对称加密(Asymmetric Cryptography)实例总结加密算法 [3] Qt笔记-AES加密[4] AES 加密…

【Betternet怎么用呢?】Betternet下载使用完整教程

Betternet是一款非常历史悠久的访问世界互联网行业的工具了。知道Betternet的用户,也应该是比较久的互联网用户了。早在2015年左右,那时候的betternet就是很多外贸行业的朋友上gmail以及Facebook上开发客户必备的工具了。 因为那时候betternet使用简单&…

Pandas + ChatGPT 超强组合,pandas-ai :交互式数据分析和处理新方法

Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过…

第7章链接:静态链接、符号表、符号解析

文章目录 7.2 静态连接7.3 目标文件7.4 可重定位目标文件7.5 符号和符号表7.6 符号解析7.6.1 链接器如何解析多处定义的全局符号7.6.2 与静态库链接7.6.3 链接器如何使用静态库来解析引用 7.2 静态连接 像 Unix ld 程序这样的静态链接器(static linker)…

C语言函数大全-- u 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- u 开头的函数 1. ultoa 1.1 函数说明 函数声明函数功能char *ultoa(unsigned long value, char *str, int base);用于将无符号长整型数转换成指定基数下的字符串表示 参数: value : 要转换的无符号长整型数st…

docker容器无法执行vim【已解决】

docker容器无法执行vim【已解决】 docker容器中执行vim失败安装文件没更换之前,速度非常的慢【失败】这里我更换了163的但是报错【失败】这里我更换了阿里的第一种报错【成功】::::这里我更换了阿里的第二种成功 完整步…