• 技术文章 >后端开发 >Golang

    详解Win系统下怎么搭建Golang开发环境

    青灯夜游青灯夜游2022-11-23 20:36:09转载746
    本篇文章给大家详细讲述如何在 Windows 系统上搭建 Go语言的开发环境,以供借鉴或参考。文章将介绍Go语言的VSCode、GoLand、Vim三种开发环境,大家可以灵活选择。

    php入门到就业线上直播课:进入学习

    1、Go语言简介

    Go语言(又称Golang),起源于2007年,并在2009年由Google正式对外发布。Go语言是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。Go语言目前可以达到C/C++ 80%的运行性能,其编译速度远快于Java和C/C++。【相关推荐:Go视频教程

    与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。

    Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。

    GO语言有如下特性:

    • 静态编译
    • 垃圾回收
    • 简洁的符号和语法
    • 平坦的类型系统
    • 基于CSP的并发模型。
    • 高效简单的工具链。
    • 丰富的标准库

    Go语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势,目前国内诸多 IT 公司均已采用Go语言开发项目,特别是在大型互联网公司有着广泛的应用。

    很多重要的开源项目都是使用Go语言开发的:

    1)Docker:火热的容器化技术
    2)Kubernetes:Goole Borg 的开源实现
    3)LXD:另一个容器化技术,其定位是系统容器,直接对标虚拟机。
    4)Etcd:类似 zookeeper 的高可用 key-value 存储
    5)TIDB:国人开发的 Goole spanner 的开源实现。定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

    2、安装Git

    Go语言开发过程中用到的第三方包,需要使用 git 下载,因此 git 是必不可少的。下载地址为:https://gitforwindows.org。

    假设安装路径为 C:\Program Files\Git,需要将以下路径添加到环境变量 PATH:

    C:\Program Files\Git\bin
    C:\Program Files\Git\cmd

    这个地方初学者需要注意一下,Git默认是采用命令行手动输入命令去操作的。还可以像SVN那样通过UI界面去做操作,只要下载TortoiseGit就好了。

    3、Go 工具链(编译器)安装

    先到GO语言官网 Downloads - The Go Programming Language 下载最新版本的GO语言安装包,双击按照向导完成安装:

    Golang开发环境涉及到几个环境变量,比较重要的是:GOROOT,GOPATH。使用go env命令就可以查看 Go 的环境变量,不带参数打印所有环境变量:

    λ go env
     
    set GOARCH=amd64
    set GOBIN=
    set GOCACHE=C:\Users\zhuyadong\AppData\Local\go‐build
    set GOEXE=.exe
    set GOFLAGS=
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOOS=windows
    set GOPATH=C:\Users\zhuyadong\go
    set GOPROXY=https://goproxy.io
    set GORACE=
    set GOROOT=D:\Program\Go
    set GOTMPDIR=
    set GOTOOLDIR=D:\Program\Go\pkg\tool\windows_amd64
    set GCCGO=gccgo
    set CC=gcc
    set CXX=g++
    set CGO_ENABLED=1
    set GOMOD=
    set CGO_CFLAGS=‐g ‐O2
    set CGO_CPPFLAGS=
    set CGO_CXXFLAGS=‐g ‐O2
    set CGO_FFLAGS=‐g ‐O2
    set CGO_LDFLAGS=‐g ‐O2
    set PKG_CONFIG=pkg‐config
    set GOGCCFLAGS=‐m64 ‐mthreads ‐fmessage‐length=0 ‐fdebug‐prefix‐map=C:\Temp

    3.1、环境变量GOROOT

    GOROOT其实就是Golang的安装目录。新版本的GOROOT已经不需要设置了。Golang编译器安装后,会自动把%GOROOT%\bin目录添加到环境变量PATH。

    如下所示,这是我电脑上安装完 Golang 后,在命令行中输出的Go版本:

    λ go version
    2 go version go1.19.2 windows/amd64

    3.2、环境变量GOPATH

    可以把GOPATH指向的目录,理解为工作目录,其作用是告诉Go命令和其它相关工具,在哪里找系统上安装的Go包。

    GOPATH可以指向多个路径,与其它环境变量的设置一样,用相同的分割符分割。windiows 系统分割符是 ; ,linux 系统分割符是 : 。

    默认的GOPATH是%USERPROFILE%\go\bin。在没有Go Modules之前,通常都需要修改GOPATH的值。GOPATH 的目录结构,是约定好的,不可修改:

    GOPATH
    ├─bin 存放安装的第三方工具
    ├─pkg 存放编译的第三方库
    └─src 源码目录
    ├─demo 这是你自已的项目源代码,每个项目一个目录
    └─github.com 这是从 github.com 下载的第三库、工具的源代码

    3.3、Go常用命令

    go build 在源代码目录执行该命令,编译该目录下的源代码,生成可执行程序或库。

    go install 除了编译,还进行安装(将生成的结果拷贝到指定目录)。可执行程序拷贝到 %GOPATH%\bin,库拷贝到 %GOPATH%\pkg。

    go get 从远程仓库获取代码,同时进行编译和安装。

    4、包管理

    由于国内众所周知的网络原因,不能直接访问 golang 的官方网站,由此导致不能自动安装依赖项,这也是搭建 Go 开发环境最麻烦的地方。为解决网络问题,有以下几种方法:

    1)方法1:找一个可用的 VPN。
    2)方法2:安装失败后,查看日志,到 github.com 上查找对应的库,下载到本机的对应位置,再执行 go install 进行安装。
    3)方法3:使用 gopm 包管理工具,后面详解。
    4)方法4:启用 Go Modules,并设置 GOPROXY 使用代理。

    这里提供手动安装依赖的方法,只需要安装一次,其它各种开发环境都可以共享使用。

    4.1、go module

    自从 Go 官方推出 v1.11 之后,增加新的依赖管理模块并且更加易于管理项目中所需要的模块。模块是存储在文件树中的 Go 包的集合,其根目录中包含 go.mod 文件。 go.mod 文件定义了模块的路径,它也是用于根目录的导入路径,以及它的依赖性要求。每个依赖性要求都被写为模块路径和特定语义版本。

    从 Go 1.11 开始,Go 允许在 $GOPATH/src 外的任何目录下使用 go.mod 创建项目。在 $GOPATH/src 中,为了兼容性,Go 命令仍然在旧的 GOPATH 模式下运行。当 module 功能启用时, GOPATH 在项目构建过程中不再担当 import 的角色,但它仍然存储下载的依赖包,具体位置在 $GOPATH/pkg/mod 。

    为了保持与兼容,环境变量如下设置:

    • GOROOT : 不需要设置,设置了也没关系
    • GOPATH : 保持默认。设置其它目录也可以,但 项目代码 不能放在%GOPATH%\src 目录下,否则 go module 需要明确启用
    • GO111MODULE : 保持默认。
    • GOPROXY : 值为 https://goproxy.io 。设置代理,启用模块后,用于下载需要翻墙才能访问的包。
    • 其它可用的代理网址:

    https://goproxy.io
    https://athens.azurefd.net
    https://goproxy.cn
    https://gocenter.io

    Go官方推出官方模块代理是 https://proxy.golang.org (被墙状态);github上的镜像仓库:https://github.com/goproxyio/goproxy 。

    这样设置的好处是,当项目源代码在 %GOPATH%\src 目录下时,使用旧版本的模式查
    找第三方工具、包;当项目源代码不在 %GOPATH%\src 目录下,并且其父路径上的任
    何一个目录有 go.mod 文件,就自动启用 go module。

    GO111MODULE 有以下几种值:

    • off:go 命令行将不会支持 module 功能,寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找。
    • on:go命令行会使用 modules,而一点也不会去 GOPATH 目录下查找。
    • auto:默认值,go 命令行将会根据当前目录来决定是否启用 module 功能。这种情况下可以分为两种情形:当前目录在 GOPATH/src 之外,且该目录包含go.mod 文件,或者该目录是包含 go.mod 文件的目录的子目录。

    打开命令行,保证当前目录不是 %GOPATH% 及其子目录,执行 go get 即可正常安装第三方工具包。

    4.2、gopm

    gopm 是 Go 的一个包管理工具,有如下特性:

    • 无需 Git 和 Hg 等版本管理工具,就可以下载指定版本的 Go 语言包
    • 可以解决翻墙问题,在国内有加速效果
    • 只能下载依赖的包的源码,不能编译安装

    官方网址:https://gopm.io
    安装方法: go get ‐u github.com/gpmgo/gopm

    gopm基本用法:

    # 查看当前工程依赖
    gopm list
    # 显示依赖详细信息
    gopm list ‐v
    # 列出文件依赖
    gopm list ‐t [file]
    # 拉取依赖到缓存目录
    gopm get ‐r xxx
    # 仅下载当前指定的包
    gopm get ‐d xxx
    # 拉取依赖到 $GOPATH
    gopm get ‐g xxx
    # 检查更新所有包
    gopm get ‐u xxx
    # 拉取到当前所在目录
    gopm get ‐l xxx
    # 运行当前目录程序
    gopm run
    # 生成当前工程的 gopmfile 文件用于包管理
    gopm gen ‐v
    # 根据当前项目 gopmfile 链接依赖并执行 go install
    gopm install ‐v
    # 更新当前依赖
    gopm update ‐v
    # 清理临时文件
    gopm clean
    # 编译到当前目录
    gopm bin

    5、编写Go语言代码的IDE或编辑工具

    5.1、基于VSCode的Go开发环境

    5.1.1、安装VSCode

    VSCode 全称是 Visual Studio Code,是微软开发的免费开源的现代化轻现级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段、代码对比 Diff、GIT命令 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux,运行流畅,可谓是微软的良心之作。

    5.1.2、安装插件

    进入 VSCode,单击左侧的 扩展图标,或者按 Ctrl+Shift+X 快捷键,即可打开扩展管理页面:

    常用插件列表有:

    • Bookmarks书签
    • Bracket Pair Colorizer 2括号按层级彩色显示
    • Chinese(Simplified) Language Pack for Visual Studio Code简体中文语言包
    • Go Golang 语言开发插件
    • koroFileHeader 用于生成文件头、函数等的注释,支持多种语言
    • Project Manager 项目管理插件,可以方便的在不同的项目间切换
    • Settings Sync 配置同步插件
    • Power Mode 超级炫酷的输入特效插件,给你不一样的 Codding 体验

    安装完 Go 插件后,打开一个来 go 文件或项目,VSCode 会自动提示安装依赖,点击“安装”,等待安装完成即可。如果安装失败,参考下面的方法。第三方工具、包的安装,不论基于什么IDE、编辑器,操作方法都是一致的。

    启用 go module 的,执行如下命令,手动安装:

    gopm get ‐v ‐g golang.org/x/tools
    gopm get ‐v ‐g golang.org/x/lint
    gopm get ‐v ‐g golang.org/x/sync
    gopm get ‐u ‐v ‐g github.com/mdempsky/gocode
    go install ‐v github.com/mdempsky/gocode
    go get ‐u ‐v github.com/uudashr/gopkgs/cmd/gopkgs
    go get ‐u ‐v github.com/ramya‐rao‐a/go‐outline
    go get ‐u ‐v github.com/acroca/go‐symbols
    go get ‐u ‐v golang.org/x/tools/cmd/guru
    go install ‐v golang.org/x/tools/cmd/gorename
    go get ‐u ‐v github.com/go‐delve/delve/cmd/dlv
    go get ‐u ‐v github.com/rogpeppe/godef
    gopm get ‐u ‐v ‐g github.com/sqs/goreturns
    go install ‐v github.com/sqs/goreturns
    go install ‐v golang.org/x/lint/golint
    # gopm get ‐v ‐g ‐g golang.org/x/tools/cmd/gopls
    go install ‐v golang.org/x/tools/cmd/gopls
    gopm get ‐u ‐v ‐g github.com/stamblerre/gocode
    go build ‐o %GOPATH%\bin\gocode‐gomod.exe github.com/stamblerre/gocode

    5.1.3、常用配置

    修改配置的方法:文件 -> 首选项 -> 设置,或者快捷键 Ctrl+.(需要先将焦点移出编辑
    器,比如关闭所有标签页,或者打开左侧的资源管理器即可)。单击右上解的 {} ,可以打开 settings.json 文件,手动修改配置。

    这是我在用的配置(settings.json 文件的部分内容),在此分享给大写。

    {
    	"files.autoGuessEncoding": true,
    	"files.trimFinalNewlines": true,
    	"files.trimTrailingWhitespace": true,
    	"editor.lineNumbers": "relative", // 相对行号
    	"editor.fontSize": 18,
    	"editor.renderWhitespace": "all",
    	"editor.renderControlCharacters": true,
    	"editor.wordWrapColumn": 100,
    	"editor.rulers": [
    		100
    	],
    	"editor.wrappingIndent": "indent",
    	"editor.fontLigatures": true,
    	"editor.formatOnPaste": true,
    	"editor.formatOnType": true,
    	"editor.acceptSuggestionOnEnter": "off",
    	"editor.quickSuggestions": {
    	"comments": true,
    	"strings": true
    	},
    	"editor.suggest.localityBonus": true,
    	"editor.suggestSelection": "recentlyUsedByPrefix",
    	"editor.formatOnSave": true,
    	"editor.mouseWheelZoom": true,
    	"breadcrumbs.enabled": true,
    	"workbench.editor.highlightModifiedTabs": true,
    	"search.showLineNumbers": true,
    	"search.useIgnoreFiles": false,
    	"search.followSymlinks": false,
    	"debug.inlineValues": true,
    	"debug.openExplorerOnEnd": true,
    	"debug.allowBreakpointsEverywhere": true,
    	"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
    	"git.path": "git.exe",
    	"git.promptToSaveFilesBeforeCommit": true,
    	"git.showPushSuccessNotification": true,
    	"powermode.enabled": true,
    	"powermode.enableShake": false,
    	"sync.autoUpload": true,
    	"go.autocompleteUnimportedPackages": true,
    	"go.inferGopath": true,
    	"go.useCodeSnippetsOnFunctionSuggest": true,
    	"go.coverageOptions": "showCoveredCodeOnly",
    	"go.gotoSymbol.includeImports": true,
    	"go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
    	"go.buildOnSave": "off",
    	"explorer.confirmDragAndDrop": false,
    	"explorer.openEditors.visible": 0,
    	"fileheader.configObj": {
    		"createFileTime": false,
    		"language": {
    			"go": {
    				"head": "// ",
    				"middle": "// ",
    				"end": "//"
    			}
    		},
    		"autoAdd": false, // 自动添加文件头部注释
    		"autoAlready": true, // 仅支持的语言自动添加头部注释
    		"headInsertLine": {
    		"php": 2
    		},
    		"beforeAnnotation": {
    			"py": "#!/usr/bin/env python\n# coding=UTF‐8",
    			"go": "// Package "
    		}
    	},
    	// 函数注释 Ctrl+Alt+T
    	"fileheader.cursorMode": {},
    	// 文件头注释 Ctrl+Alt+I
    	"fileheader.customMade": {
    		"custom_string_obkoro1": "<Copyright(C) Suzhou Keda Technology Co., Ltd. All rights reserved.>"
    		"Author": "zhuyadong@kedacom.com",
    		"Date": "Do not edit", // 文件创建时间(不变)
    		"LastEditors": "zhuyadong", // 文件最后编辑者
    		"LastEditTime": "Do not edit", // 文件最后编辑时间
    	}
    }

    5.2、GoLand

    GoLand 是 JetBrains 公司推出的商业 Go 语言集成开发环境(IDE)。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。JetBrains 还有其它众多IDE,比如 IDEA,WebStorm,PyCharm, PHPStorm 等。

    双击按照向导完成安装即可。由于是商业IDE,只能免费试用 30 天。网上有破解方
    法。如果条件允许,还是建议支持厂商购买正版。第三方工具、包的安装,参考 VSCode 开发环境中插件安装一节。

    5.3、Vim

    Vim 又称为神级文本编辑器,支持众多特性,速度飞快,有很多在牛都用它写代码。使用 Vim 写 Go 代码,需要插件 vim‐go ,官方地址:https://github.com/BroQiang/vim-go-ide 。

    如果有 VPN,可以直接访问 golang.org 的话,执行命令:GoInstallBinaries 可以自动安装依赖的第三方工具。详细配置就不介绍了,对于熟悉 Vim 的同学不难,不熟悉的也没必要浪费时间折腾,安心使用 VSCode 或 GoLand 就好了。

    第三方工具、包的安装,参考 VSCode 开发环境中插件安装一节。vim-go 插件依赖的第三方包列表:

    go get ‐u ‐v github.com/mdempsky/gocode
    go get ‐u ‐v ‐d github.com/stamblerre/gocode
    go build ‐o %GOPATH%\bin\gocode‐gomod.exe github.com/stamblerre/gocode
    go get ‐u ‐v golang.org/x/tools/cmd/guru
    go get ‐u ‐v golang.org/x/tools/cmd/gorename
    go get ‐u ‐v github.com/go‐delve/delve/cmd/dlv
    go get ‐u ‐v github.com/rogpeppe/godef
    go get ‐u ‐v golang.org/x/lint/golint
    go get ‐u ‐v golang.org/x/tools/gopls
    go get ‐u ‐v github.com/zmb3/gogetdoc
    go get ‐u ‐v github.com/davidrjenni/reftools/cmd/fillstruct
    go get ‐u ‐v github.com/fatih/motion
    go get ‐u ‐v github.com/kisielk/errcheck
    go get ‐u ‐v github.com/josharian/impl
    go get ‐u ‐v github.com/jstemmer/gotags
    go get ‐u ‐v golang.org/x/tools/cmd/goimports
    go get ‐u ‐v github.com/fatih/gomodifytags
    go get ‐u ‐v honnef.co/go/tools/cmd/keyify
    go get ‐u ‐v github.com/koron/iferr
    go get ‐u ‐v github.com/klauspost/asmfmt/cmd/asmfmt
    # 支持 go mod
    go get ‐u ‐v github.com/golangci/golangci‐lint/cmd/golangci‐lint
    # 1.不支持 go mod 2.已废弃,vim默认使用它,可以配置为 golangci‐lint
    go get ‐u ‐v github.com/alecthomas/gometalinter

    5.4、其他Go代码编写工具

    除了 VSCode、GoLand 和 Vim ,还有其它一些工具可以用来写 Go 代码,有兴趣的可
    以尝试:

    • LiteIDE:是一款开源、跨平台的轻量量 Go 语言集成开发环境。
    • Eclipse:是著名的跨平台开源集成开发环境(IDE)。最初主要用来做Java语言开发,可以通过插件使其支持 JavaScript、C++、Python、PHP、Go、Rust 等语言的开发。
    • Sublime:是一个代码编辑器,支持多种编程语言的语法亮度,拥有优秀的代码自动完成功能。通过插件可以使其支持 Go 语言开发。

    6、Go语言学习资料分享

    最后,提供一些 Go语言的在线学习资料和网站。

    一些在线学习网站:

    • 官方网站1: https://golang.org
    • 官方网站2: https://golang.google.cn 国内镜像站点,
    • 官方文档1: https://golang.org/doc
    • 官方文档2: https://golang.google.cn/doc 国内镜像站点,无需翻
    • GoDoc文档3: https:/godoc.org
    • Go Walker: https://gowalker.org 一个可以在线生成并浏览 Go 项目 API 文
    • 档的 Web 服务器
    • Go在线教程: https://tour.golang.org
    • Go语言中文网:https://studygolang.com Golang中文社区
    • Golang中国:https://www.golangtc.com Golang 中文社区
    • Go中国技术社区:https://gocn.vip Golang 中文社区

    一些推荐的电子书:

    • 《The Way to Go》,作者:Ivo Balbaert;中文书名是《Go 入门指南》,翻译:无闻,https://github.com/Unknwon/the-way-to-go_ZH_CN
    • 《Go Web编程》,作者:谢孟军,https://github.com/astaxie/build-webapplication-with-golang
    • 《深入解析Go》,作者:tiancaiamao,https://github.com/tiancaiamao/go-internals

    更多编程相关知识,请访问:编程视频!!

    以上就是详解Win系统下怎么搭建Golang开发环境的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:go语言 Golang Go
    上一篇:go语言中goto怎么用 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• go语言如何从切片中删除元素• go语言如何初始化结构体的成员变量• go语言中的rune怎么获取字符长度• go语言项目是怎么配置Gitlab CI的• docker是用Go语言写的吗• 聊聊go语言中的切片(slice)
    1/1

    PHP中文网