Go 开发环境的安装网上教程很多,这里就不做介绍了。这里主要介绍一下在 GoLand 上开发环境的设置,这里的设置主要在 MacOS 上进行,其他系统可能有所不同。
在写代码过程中,总要引用其他的库而产生功能模块的依赖。Go 在 版本1.1 开始提供 Module 模块化的支持。在1.4 版本后 鼓励所有用户从其他依赖性管理系统迁移到模块
《Goland 这些实操技巧,你可能还不会!》介绍了日常开发中一些比较好用的技巧。本篇文章继续介绍一些其他比较好用的技巧。
我们知道在go刚发布的时候,没有包管理的概念,Golang 团队在 FAQ 中提议开发者保证相同 import path 的兼容性,但并没有什么用,所以在1.6之后,引入管理包依赖的方式,其基本理念是:
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。
go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。
插件开发,是一件即快乐又痛苦的事情。快乐的是你可以根据自己的需求通过插件来进行实现,比如经常看到的 Chrome 的插件开发。插件对于应用的原生生态有着很大的益处,往往那些特别优秀的插件甚至会被官方收编或者在正式功能中加入插件的功能。痛苦的是你需要去看文档,看插件开发的各种文档,如果文档不详细的话,痛苦加倍。程序猿最讨厌的事就是看别人的文档以及自己写文档。当然,除了文档,作为小白你还会踩到各种各样的坑。
go moudules是Go的一个包管理工具,官方提供的,还是比较靠谱的,最低Go版本要求1.11+。
Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。
我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的。
我们在运行文件时经常会遇到一个这样的错误build command-line-arguments: cannot find module for path xxxxxxxxx
尝试使用了go mod去管理包,按照官方的文档指引https://blog.golang.org/using-go-modules进行实践。 整个过程中出现了几个问题:
在Go 1.12版本后,不再使用GOPATH来配置项目目录,而是使用Go Module的方式来管理依赖。所以在创建工程时,需要取消GOPATH的创建。
Go语言官方提供的依赖包管理工具已经发布很久了,有很多大佬的文章对Go Modules做了非常详尽的介绍,比如煎鱼大佬的: Go Modules终极入门(文章链接:https://juejin.cn/post/6844903433846145038)。
国内关于gomod的文章,哪怕是使用了百度 -csdn,依然全是理论,虽然golang的使用者大多是大神但是也有像我这样的的弱鸡是不是?
在 Java 的项目中,有 Maven 和 Gradle 这些很好用的依赖版本管理工具,简直不要太方便了,但是在 Golang 的项目中,之前的 Golang 官方并没有提供版本管理工具,我们以前用 go get 获取依赖其实是有潜在危险的,因为我们不确定最新版依赖是否会破坏掉我们项目对依赖包的使用方式,即当前项目可能会出现不兼容最新依赖包的问题。之后官方出了一个 vendor 机制,将项目依赖的包都放在该目录中,但这也并没有很好地管理依赖的版本。之后官方出了一个准官方版本管理工具 go dep,这也算是 go modules 的前身了吧。随着 Go1.11 的发布,Golang 给我们带来了 module 全新特性,这是 Golang 新的一套依赖管理系统。现在 Go1.12 已经发布了,go modules 进一步稳定,但官方还是没有将其设为默认机制,所以踩坑之路是必须的,本篇文章除了详细说明 go modules 的特性以及使用之外,还总结了我在这个过程中遇到的一些“坑”。
首先你的下载golang的sdk,写文章的时候最下版本是1.13,网速可以的去官网下载,无法下载的,提供两个地址csdn下载 和 服务器下载。
全名go modules,简单说就是go项目用来管理第三方包的工具。此特性是 golang 1.11版本开始增加的。
最近公司需要做一个上传工具,因为上传的文件可能好几个G,所以用传统的http上传是很不现实的,大家就想着做成客户端,但是要跨平台,所以就进行技术选型,当时大家最先想到的就是electron,但是electron打出来的包很大,因为他把一个浏览器内核也给打包进去了。后来就想起了用go写,因为go也是跨平台的,然后百度找了几个,都是文档不全,偶然看到一个框架叫wails,而且这个相对于其他的几个还有个文档,关键是目前几大js框架都支持,wails是使用系统本身的系统内核,mac/linux使用的是webkit,windows使用的是mshtml,目前就是ie内核,因为ie太落后目前好多不兼容,github上很多人提issure,作者后期考虑换用edge内核。下面是做完效果图
Go(Golang) 是由 Google 开源的、静态、强类型的编程语言,Go 语言最初的设计目的是用来替代 C++。
如果提示没有权限,加上sudo以root用户的身份再运行。执行完就可以在/usr/local/下看到go目录了。
下载地址 https://studygolang.com/dl 选择自己对应的操作系统
今天在iMac安装了go语言相关的配置,也安装了Goland,但是在Goland打开go项目直接报错:项目导入的包标红了,而且也报了unresolved reference的错误,但是程序却可以正常运行
最近开始系统学习一下Golang这么新语言,记录一下它的基本环境变量配置以及依赖管理方式。编写本文的时候使用的Golang版本为go1.13.5 windows/amd64,其他版本不一定保证适合本文的内容。因为习惯,可能有时候把Go语言称为Go,有时候称为Golang。
整体来说,Go配置环境还是挺轻松的,和Python差不多,并且会自动添加环境变量。
在上一章的学习中,我们知道写个程序要执行的话,有两种方法,但是如果一个大型项目,要运行这些文件,如何都要一个一个编译执行?这些文件之间如何进行协调开发?这个就涉及到go的工程管理
如果代码放在了github里 , 那么就在src目录下新建的 github.com/用户名/仓库名 这个目录下进行开发工作
本教程使用的编辑器为Vs code 微软的一款开源的文本编辑器,可能有人说goland更好,聪明的人自由聪明的选择,如果需要使用goland但却没经济基础使用正版麻烦您移步到资讯社进行下载,VS code 请 点我下载
1. GoLand是一个比较好用的IDE,但只免费试用30天,也可用免费的vscode,简单代码可直接使用notepad+,甚至vim;
有时候goland编辑器import新包的时候, 新包的方法不能够通过 cmd + click点击过去,
这是 2020 年第 3 个版本,也是最后一个版本。在 GoLand 2020.3 中,您可以探索 goroutines dumps,运行并导航到单个表测试(table tests),并从对 Testify 测试框架的扩展支持中获得更多信息。你还将发现许多新的代码编辑功能,包括对 time 包的支持,更智能的处理包方法,UI 改进,用于 Web 开发和使用数据库的各种新功能以及用于协作开发和结对编程的新服务。具体看看有哪些新特性。
前文学习: 【从零开始学习Go语言】一.初识Go语言 【从零开始学习Go语言】二.Go语言的安装 【从零开始学习Go语言】三.属于Go的Hello World 【从零开始学习Go语言】四.Go常用命令释义 【从零开始学习Go语言】五.Go的词法单元 【从零开始学习Go语言】六.Go语言之数据类型标识符 【从零开始学习Go语言】七.Go标识符之内置函数常量总结 【从零开始学习Go语言】八.Go语言的数组切片引用类型与值类型(总结) 【从零开始学习Go语言】九.Go语言之变量常量及指针总结
我们上次说过如何让一个项目在 Goland 编译器跑起来,但是要自己去下包,要花不少时间找包下包,是不是很麻烦?
我们从第一天接触 go 的包依赖开始,你的老师或者看到的资料都是告诉你:直接 go get。
Go语言官方的依赖包管理工具Go Modules已经发布很久,从1.14版本开始更是默认自动开启了Go Modules的支持,相信很多人公司里的项目都从go vendor、dep 之类的依赖管理切换到Go Modules上了吧。
目前go语言最新的版本是1.16.2,当然如果官方已经有最新的版本,直接选择最新的版本安装即可。
go没有命名空间的概念,只有包的概念,每个目录下的package名需要一致,但是不需要跟所在目录名相同:
Go 富有表现力、简洁、干净且高效。它的并发机制使编写能够充分利用多核和联网机器的程序变得容易,而其新颖的类型系统可以实现灵活和模块化的程序构建。Go 可以快速编译为机器代码,同时还具有垃圾收集的便利性和运行时反射的强大功能。它是一种快速、静态类型的编译语言,感觉就像一种动态类型的解释语言。
go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化管理,但是相对GOPATH的路径是逃不掉的。另外,各个包的版本管理也显得原始,甚至有的开发将依赖包从github直接download下来自己放到GOPATH底下的vendor。go的依赖包管理一致是开发者诟病的一个痛点。所以在千呼万唤中,go 1.11 终于引进了go module管理工程的包依赖,去除了项目包管理对GOPATH的依赖,明确了依赖包的版本管理。
自从服务上云引入K8S后,我们开发模式也发生了改变。我们最能想到的一种开发流程就是:
首先我们使用 go moudle来管理依赖, go版本要求在 1.11.1 及以上
本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器。并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档。
GoLand 2024.1 版本引入了全新的全行代码补全功能、显著的性能提升、AI Assistant 的升级、对 Dev Container 的全面支持以及对 Go 1.22 的更新支持。此版本还包括多项用户体验和内部工具的增强,旨在提高开发者的工作效率和编程体验。
KLMILO9UY9-eyJsaWNlbnNlSWQiOiJHT1VHRExEVVVGIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAyMi0xMC0yMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFBDIiwicGFpZFVwVG8iOiIyMDIyLTEwLTIyIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBXUyIsInBhaWRVcFRvIjoiY1dsGw9l2T8ENH3LSXOLgQZerqGL9O8MKw4n0Tx0da3f73PUo6yjRKxr3AVkwYUiW5VLXpF2nWIPSk+6Wd7Zyq31RTFbZTrY/OJE8++zXHj9biJG8mcCOnEwTgOZYgwEUzjjLw27Dkl9gq5vBcYEo1F4lr/lWSc6wlzCY48Syvoni9xAE9cFHDkUHNA7muTetqLem8QxHEtaHenbwBhdA803AIpGLYnZ0kMwjPWNzEx+Awc768oxZ6BoFvKtOqe3fW5jlL0yCIGYz/RE9RixVK7TBNVBFxm/PLOWLYlQytw5ECk3EqwDoszcoqMYAYZXaT45yopeQ==-MIIETDCCAjSgAwIBAMjAyMi0xMC0yMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU0kiLCJwYWlkVXBUbyI6IjIwMjItMTAtMjIiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUENXTVAiLCJwYWlkVXBUbyI6IjIwMjItMTAtMjIiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAxMjAyMjA5MjNQU0FNMDAwMDA1IiwiaGFzaCI6IjM4MTM3NzQ2LzA6LTg5OTkzNTkwOCIsImdyYWNlUGVyaW9kRGF5cyI6NywiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-kqXUG+MjwwlLjgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK
工欲善其事必先利其器。对于开发工程师同样如此,一个合适的开发工具能够有效提升我们的开发效率和定位问题的能力。
领取专属 10元无门槛券
手把手带您无忧上云