作为一个测试,作为一个测试开发, 全栈化+管理 是我们未来的发展方向.已经掌握了Java、Python、HTML的你,是不是也想了解下最近异常火爆的Go语言呢?来吧,让我们一起了解下.
Go 是一个开源的编程语言 ,它能让构造简单、可靠且高效的软件变得容易.
此时此刻呢说说 Go语言的特色 :
简洁、快速、安全
并行、有趣、开源
内存管理、数组安全、编译迅速
Go语言的用途 :
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言.
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率.它提供了海量并行的支持,这对于 游戏 服务端的开发而言是再好不过了.
Go语言的环境安装:
建议直接打开 官方地址因为墙的原因打不开
因为我用的是windows系统,这里主要讲下Windows系统上使用Go语言来编程.
默认情况下 .msi 文件会安装在 c:Go 目录下.你可以将 c:Gobin 目录添加到 Path 环境变量中.添加后你需要重启命令窗口才能生效.个人建议还是安装到 Program Files文件夹中.
使用什么开发工具来对Go语言进行编写:
建议参考网页:
解决vscode中golang插件安装失败方法
在学习go的过程中,使用的是vscode,但是一直提示安装相关插件失败,然后上网查方法,基本上是叫你建立golang.org目录什么的,结果全是错的,而且都是抄袭,很烦.无意之中看到一位博主分享的方法,他也是饱受上述的垃圾博文困扰,然后找到了解决方法,这里向他致敬,秉着让更多人看到正确解决方法的心,我写下正确的解决方法,希望对你有所帮助,也可以点开原博主链接参考:
Go有一个全球模块代理,设置代理再去安装golang的插件,就可以安装成功了.步骤有,首先Windows用户打开Powershell,一个蓝色的界面,注意不是cmd!不知道的直接打开window下面的搜索,然后输入powershell,搜索出来就可以了.
$env:GO111MODULE="on"
$env:GOPROXY=""
go env -w GOPROXY=
go env -w GOPRIVATE=*.corp.example.com
然后我们打开VsCode界面,下面会提示安装插件,我们选择Install ALL,就会安装成功
当你在运行Go语言程序时,提示所有的插件包都已经安装成功了时,就可以正常使用了,要不然一堆报错会让你非常心烦.
好了,今天先到这里,晚安、下班~
golang学习比较简单,不过任何一门语言都不是孤立存在的,今天这一节简要说明一下golang开发的学习路线
①golang基础,包括go语言安装,go语言语法,流程控制语句,函数,方法,面向对象概念,网络编程,并发编程等
链乔教育在线祝您学有所成.
Go语言的工作需求量不大,所以工作比较难找.
目前仅凭Go语言不好找工作,一是因为圈子不大,需求量也不大,二是即使工作需Go,也不是仅凭Go就可以,更重要的是其他的,比如云平台开发经验这些Go的应用能力.
随着Go语言越来越成熟,很多大厂还是有Go的需求量.只不过北上广深的机会要比其他城市多一些,毕竟公司也多.但是Go要比Java和Python年轻太多,而且生态圈还没有那么成熟.所以工作比较难找.
Go语言也称 Golang,兼具效率、性能、安全、健壮等特性.这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点.
Go 语言
这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性.Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定.
Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持.Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程.
因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说.所以呢可以说Go语言是一门混合型的语言.
此外,很多重要的开源项目都是使用Go语言开发的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes.Go 是编译型语言,Go 使用编译器来编译代码.编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件.要创建并运行 Go 程序,程序员必须执行如下步骤.
保存文件;编译程序;运行编译得到的可执行文件.
这不同于 Python、Ruby 和 JavaScript 等语言,它们不包含编译步骤.Go 自带了编译器,所以呢无须单独安装编译器.
为此,您将编写以下内容:
①.、编写代码
a.添加代码以将专辑数据添加到专辑列表.
在此代码中:
①.)用于Context.BindJSON 将请求正文绑定到newAlbum.
b.更改您的main函数,使其包含该router.POST函数,如下所示.
①.)将路径中的POST方法与 /albumspostAlbums函数相关联.
a.如果服务器从上一节开始仍在运行,请停止它.
b.从包含 main.go 的目录中的命令行,运行代码.
c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求.
该命令应显示添加专辑的标题和 JSON.
d.与上一节一样,使用curl检索完整的专辑列表,您可以使用它来确认添加了新专辑.
该命令应显示专辑列表.
为此,您将:
a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑.
此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑.
(1)Context.Param用于从 URL 中检索id路径参数.当您将此处理程序映射到路径时,您将在路径中包含参数的占位符.
如上所述,实际使用中的服务可能会使用数据库查询来执行此查找.
b.最后,更改您的main,使其包含对router.GET的新调用,路径现在为/albums/:id ,如以下示例所示.
(1)将/albums/:id路径与getAlbumByID功能相关联.在 Gin 中,路径中项目前面的冒号表示该项目是路径参数.
b.在包含 main.go 的目录中的命令行中,运行代码以启动服务器.
该命令应显示您使用其 ID 的专辑的 JSON.如果找不到专辑,您将收到带有错误消息的 JSON.
恭喜!您刚刚使用 Go 和 Gin 编写了一个简单的 RESTful Web 服务.
本节包含您使用本教程构建的应用程序的代码.
在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形.(PWM也就是脉宽调制,一种可调占空比的技术,得到的效果就是:如果用示波器测量引脚会发现有方波输出,而且高电平、低电平的时间是可调的.)
这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以和我联系. github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是 GPIO1 .这可是不小的打击,因为我想使用至少四个 PWM ,还是不死心,想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事.
根据以上两个图对比可以发现如下规律:
为了验证个人猜想是否正确,这里先直接使用指令的模式,模拟配置下是否能够正常输出.
小节:树莓派具有四路硬件输出PWM能力,但是四路中只能输出两个独立(占空比独立)的PWM,同时四路输出的频率均是恒定的.
因为拿到了手册,这里我想直接操作寄存器的方式进行设置,也是顺便学习下Go语言处理寄存器的过程.首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手册,发现只有偏移,没有找到基地址.
以下是demo(pwm) 源码