【安装运行时】

直接上官网下载运行时安装即可:golang 官网

根据自己操作系统选择 golang 运行时版本,例如windows

当然我们也可以直接选择下面的稳定版本进行下载

下载安装后,安装程序会自动配置环境变量,我们在cmd中输入 go version 查看当前golang运行时版本

go version

【选择合适的编辑器】

Goland

Goland,商业公司jetbrains 近两年推出的 Go 集成开发环境,它真的是无比强大。缺点也是有的,就是比较吃机器配置(占内存高,低配机器卡),需要收费。

VS Code

VS Code,微软公司的开源文本编辑器,轻量级,免费。这里我选择vs code作为初步学习的IDE

VS Code插件

在vs code的扩展管理界面搜索"go",下图第一个名为"go"的插件直接安装即可

【配置GoPath/GoModule】

什么是GoPath(Go语言工作目录)

GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。

工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一,输出的二进制运行文件也不统一,这样会导致开发的标准不统一,影响开发效率。

我们可以通过 go env命令查看我们配置的GoPath地址

go env

其实 GOPATH是go语言早期的设计,但是在开发过程中,多个项目用一个GoPath会十分不方便,会导致经常忘记切GoPath导致编译版本错误等问题。这时候,我们就要用GoModule了。

值得一提的是,采用GoPath其实是golang团队初期设计上的小缺陷,造成了很大的不便。因此,golang团队在Golang1.11版本新引入了官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题。

什么是GoModule

GoModule也叫 go mod,因为命令使用时,需要输入 go mod 来操作Modules

使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目

然后使用命令来创建go.mod文件(其实就是一个项目的包管理文件)

打开vs终端,首先cd到项目根目录,然后输入命令

go mod init

输出日志告诉你要我们要定义一个Module名称,并给出了举例,那么我们加一个名称

go mod init example.com/m

这时候,我们可以看到我们的项目根目录已经自动生成了一个go.mod文件

【配置代理地址】

众所周知的原因,导致我们无法轻松访问golang的官方服务器,在安装依赖项时,会因为网络问题导致安装失败,这时候,就要用代理了。

使用goproxy.io

官方地址:https://goproxy.io/zh/

我用的是windows系统,按官方教程直接配置

  1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
  2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮
  3. 在 “变量名” 输入框并新增 “GOPROXY”
  4. 在对应的 “变量值” 输入框中新增 “https://goproxy.io,direct”
  5. 最后点击 “确定” 按钮保存设置

其他系统配置参考官方教程即可,非常简单。

【推荐项目结构】

按照golang的官方推荐,一般项目目录下会有下面结构

|--bin

|--pkg

|--src

其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。

一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。

对于pkg目录,曾经有人问:我把Go中的包放入pkg下面,怎么不行啊?他直接把Go包的源文件放入了pkg中。

这显然是不对的。pkg中的文件是Go编译生成的,而不是手动放进去的。(一般文件后缀.a)

对于src目录,存放源文件,Go中源文件以包(package)的形式组织。通常,新建一个包就在src目录中新建一个文件夹。

【开始HelloWorld吧】

我们在src下面(可以自行根据喜好创建组织名,项目名,作者等层次)创建helloworld.go文件

然后使用vscode输入helloworld代码

package main

import "fmt"

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

然后我们按F5运行(Debug)...

这时候vscode可能会提示我们安装调试包等依赖项,我们点击一键安装即可

由于外网问题,如果没有配置代理地址,那么很有可能安装报错,这时候请参考前面步骤的【配置代理地址】解决

成功输出了Helloworld

golang 入门之环境搭建的更多相关文章

  1. 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建

    003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...

  2. golang开发android环境搭建_window

    golang开发android环境搭建介绍 一 安装依赖软件: git:版本管理 go:  go开发环境(版本>=1.5),可直接下载window版的go安装包. android studio: ...

  3. Android入门之环境搭建

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...

  4. scala 入门Eclipse环境搭建

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...

  5. 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

    Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...

  6. scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  7. 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)

    总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■   CLI是Command-Lin ...

  8. JAVA WEB快速入门之环境搭建

    前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...

  9. ubuntu16.04 Golang语言开发环境搭建

    golang即go语言是跨平台的语言,适用于windows 和linux平台,下面介绍linux平台下ubuntu16.04系统下的开发环境搭建过程. 一.安装开发必备环境 执行下面命令分别安装git ...

随机推荐

  1. Flutter: 获取本地json数据

    FutureBuilder( future: DefaultAssetBundle.of(context).loadString('data/data.json'), builder: (contex ...

  2. Baccarat凭什么吸引做市商?2021年将如何发展?

    在过去的一年里,基于资金池的AMM自动化做市商几乎统治了所有DeFi活动,他们没有订单簿,而是根据算法曲线提供资产.尽管在流动性和交易方面取得了令人惊叹的成绩,但是其自身具有无常损失.多代币敞口以及低 ...

  3. WPF权限控制——【3】数据库、自定义弹窗、表单验证

    你相信"物竞天择,适者生存"这样的学说吗?但是我们今天却在提倡"尊老爱幼,救死扶伤",帮助并救护弱势群体:第二次世界大战期间,希特勒认为自己是优等民族,劣势民族 ...

  4. uniapp 自定义弹窗组件

    先上效果: 组件源码:slot-modal.vue <template> <view class="modal-container" v-if="sho ...

  5. 一层逻辑的网页scrapy爬虫

    1 import scrapy 2 import re 3 from fake_useragent import UserAgent 4 5 6 class DoubanSpider(scrapy.S ...

  6. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  7. three.js cannon.js物理引擎之约束(二)

    今天郭先生继续讲cannon.js的物理约束,之前的一篇文章曾简单的提及过PointToPointConstraint约束,那么今天详细的说一说cannon.js的约束和使用方法.在线案例请点击博客原 ...

  8. 【转载】UML类图中箭头和线条的含义和用法

    文章转载自 http://blog.csdn.net/hewei0241/article/details/7674450 https://blog.csdn.net/iamherego/article ...

  9. spring 整合kafka监听消费

    前言 最近项目里有个需求,要消费kafka里的数据.之前也手动写过代码去消费kafka数据.但是转念一想.既然spring提供了消费kafka的方法.就没必要再去重复造轮子.于是尝试使用spring的 ...

  10. JDBC 连接池 & Template

    数据库连接池 # 概念:其实就是一个容器(集合),存放数据库连接的容器. * 当系统初始化号以后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容其中获取连接对象,用户访问完之后,会将 ...