手把手教你用VS code快速搭建一个Golang项目

 更新时间:2023年04月17日 09:07:59   作者:酷尔。  
Go语言是采用UTF8编码的,理论上使用任何文本编辑器都能做Go语言开发,下面这篇文章主要给大家介绍了关于使用VS code快速搭建一个Golang项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

前言

VC code是一款巨好用的编辑器,使用vs code开发项目需要进行一些配置。项目中需要用到很多的包,无论是自己建的还是第三方的。由于go语言的生态环境没有java与python那样好,没有一个好的的包管理工具这给想用vs code开发golang项目的同学带来了困扰,本篇博客写了关于一个go语言初学者如何使用VScode搭建go语言项目的过程,对初学者很友好,可以快速的搭建起来一个go语言项目。如果不擅长配置的话可以使用goland,相对于goland来说,VScode搭建项目显得困难了许多。接下来就带大家了解一下如何在没有集成开发环境下手刃一个go语言项目。

安装go语言环境

这个巨简单就不说了,大家可以网上检索一下教程。

了解Go开发相关的环境变量

#GOROOT:GOROOT就是Go的安装目录,(类似于java的JDK)。不用往环境变量配置。包管理方式变成Go Module之后就用处不大了。
GOROOT = D:\Go (你安装go环境的目录)   
#GOPATH:GOPATH是我们的工作空间,保存go项目代码和第三方依赖包。安装后,在环境变量中有。
GOPATH = %USERPROFILE%\go
#配置代理加速(因为go语言用到的包大多数都在github)
GOPROXY=https://goproxy.cn,direct

熟悉Go Module

(1)使用 go module 管理依赖后会在项目根目录下生成两个文件 go.mod 和 go.sum。go.mod 中会记录当前项目的所依赖的包的信息。

(2)在需要使用时才开启GO111MODULE = on,平时GO111MODULE = off,避免在已有项目中意外引入 go module。

(3)go module 的目的是依赖管理,所以使用 go module 时你可以舍弃 go get 命令(但是不是禁止使用, 如果要指定包的版本或更新包可使用go get,平时没有必要使用)

要使用go module 首先要设置GO111MODULE=on,GO111MODULE 有三个值,off、on、auto。
auto 会根据当前目录下是否有 go.mod 文件来判断是否使用 modules 功能。
平时 GO111MODULE = off,在需要使用的时候再开启,避免在已有项目中意外引入 go module。
命令:
set GO111MODULE=on
go env // 查看 GO111MODULE 选项为 on 代表修改成功
#初始化。先进入test项目下,然后执行此命令,项目根目录会出现一个 go.mod 文件
go mod init test 
#检测依赖。tidy会检测该文件夹目录下所有引入的依赖,写入 go.mod 文件,写入后你会发现 go.mod 文件有所变动
go mod tidy 
#下载依赖。我们需要将依赖下载至本地,而不是使用 go get
go mod download 
#导入依赖。此命令会将刚才下载至 GOPATH 下的依赖转移至该项目根目录下的 vendor(自动新建) 文件夹下, 此时我们就可以使用这些依赖了
go mod vendor 
#依赖更新:这里的更新不是指版本的更新,而是指引入新依赖,依赖更新请从检测依赖部分一直执行即可:
go mod tidy
go mod download
go mod vendor

注:go mod vendor创建的文件夹里面可以放用户自己的定制的包(放入后直接用包名就可以导入项目不需要相对路径)

创建一个go项目

  1. 新建文件夹demo,作为项目根目录
  2. cmd,执行命令:go mod init demo 此时会生成一个go.mod文件(存放项目依赖)
  3. vscode打开文件:选择项目根目录demo
  4. 新建main.go文件:在根目录下创建main.go文件
  5. 执行
    1. go mod tidy // 添加或者删除 modules,取决于依赖的引用 (执行完生成go.sum文件)
      注意是添加删除,用不好vendor内的自定义包就没有了
    2. go mod vendor // 复制依赖到 vendor 目录下

如图

此时就可以放肆地开发了,自己定义的包要放在vendor目录下。不要随便使用go mod tidy命令,因为这个命令是检测当前目录的依赖,也就是main.go所在的目录,如果是你自己写了项目,并且有很多自定义包他很可能会给你移除掉。

项目迁移

项目中可能引用了大量的github第三方库,使用go mod tidy可以直接将所有的第三方库下载下来(前提是网络通畅)
本篇文章上面教过大家Go语言配置加速代理了,最好配置一下。

  • 将别人的项目解压出来
  • 在main.go同级目录下进入cmd命令行
  • 执行 go mod tidy
  • 执行 go mod download
  • 执行 go mod vendor
  • 将自定义包导入vendor目录下
  • 项目配置完成

可以看一下下面的项目目录结构:

总结

到此这篇关于用VS code快速搭建一个Golang项目的文章就介绍到这了,更多相关VS code快速搭建Golang项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang中urlencode与urldecode编码解码详解

    Golang中urlencode与urldecode编码解码详解

    这篇文章主要给大家介绍了关于Golang中urlencode与urldecode编码解码的相关资料,在Go语言中转码操作非常方便,可以使用内置的encoding包来快速完成转码操作,Go语言中的encoding包提供了许多常用的编码解码方式,需要的朋友可以参考下
    2023-09-09
  • Golang中使用JSON的一些小技巧分享

    Golang中使用JSON的一些小技巧分享

    这篇文章主要分享了Golang中使用JSON的一些小技巧,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Go语言共享内存读写实例分析

    Go语言共享内存读写实例分析

    这篇文章主要介绍了Go语言共享内存读写方法,实例分析了共享内存的原理与读写技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go内存分配之结构体优化技巧

    Go内存分配之结构体优化技巧

    这篇文章主要为大家详细介绍了Go语言内存分配之结构体优化技巧的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • go语言实现将重要数据写入图片中

    go语言实现将重要数据写入图片中

    本文给大家分享的是go语言实现将数据的二进制形式写入图像红色通道数据二进制的低位,从而实现将重要数据隐藏,有需要的小伙伴参考下吧。
    2015-03-03
  • Go如何优雅的使用字节池示例详解

    Go如何优雅的使用字节池示例详解

    在编程开发中,我们经常会需要频繁创建和销毁同类对象的情形,这样的操作很可能会对性能造成影响,这时常用的优化手段就是使用对象池(object pool),这篇文章主要给大家介绍了关于Go如何优雅的使用字节池的相关资料,需要的朋友可以参考下
    2022-08-08
  • CentOS 32 bit安装golang 1.7的步骤详解

    CentOS 32 bit安装golang 1.7的步骤详解

    Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。在发布了6个rc版本之后,Go 1.7终于正式发布了。本文主要介绍了在CentOS 32 bit安装golang 1.7的步骤,文中给出了详细的步骤,相信对大家的学习和理解具有一定的参考借鉴价值,下面来一起看看吧。
    2016-12-12
  • go编译so库让python引用编译后没有.h文件的问题

    go编译so库让python引用编译后没有.h文件的问题

    有时python需要引用go的一些开源库,这时就需要go编译成python可调用的库,本文给大家介绍了go编译so库让python引用,编译后没有.h文件的问题,需要的朋友可以参考下
    2024-02-02
  • 一文详解如何使用 Golang 处理文件

    一文详解如何使用 Golang 处理文件

    Golang 是一种强类型、静态编译、并发性高的编程语言,我们将重点介绍 Golang 中的文件基本操作,包括创建文件与查看状态,重命名与移动,删除与截断,读写文件,以及权限控制,跟着小编一起来学习吧
    2023-04-04
  • go protobuf 详解

    go protobuf 详解

    Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,这篇文章主要介绍了protobuf 详解,需要的朋友可以参考下
    2024-01-01

最新评论