如何学习一个新的技术比如现在的GO语言呢?

这通常是大家一直关注的一个问题,对于学生党来说,学习一门新的技能,能够扩展自己的知识面,对将来的工作有一定的帮助,但是往往学而不精,对于工作时的人员比如开发,项目开发时,需要解决某个需求,又或者想要跳槽来学习一门技术的情况。
个人观点仅供参考:对于学生党来说学习一门新的技术必定能扩展自己的知识面,但是应该先考虑一下时间的分配情况,比如正在学java,忽然想学GO,学习了一下GO的基础入门,学时简单还好说,难点的话就想放弃了,这样就是不太好的,可以先把java学的差不多了,再来学习一下GO语言,再比较一下俩者的指针有什么区别优势,又或者开发人员可以先通过现有的技术能不能高效的解决一个问题,比如mysql查询的速度,页面局部刷新的问题,如果传统的方法可以解决问题但是有缺陷,那就可以尝试一下新的技术,简单明白了新技术的好处后,就可以1.快速入门新的技术知识点(先要会用),2.基本语法,3.弄懂知识点的细节(规范,遇到的坑,注意项,最费时间),4.最后解决需求项目。
废话不多说,现在开始学习GOlang

Golang官网:https://go.dev

1.GO语言的介绍

GO语言:(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算
肯.汤普森大家都不陌生,C语言,linux,B语言,GO语言全部是他发明的,发明语言像玩似的

2.GO语言的诞生

常见的c,c++语言,运行速度快,但是编译速度慢,还存在内存泄漏
常见的脚本语言:php,python,开发效率高,但是速度不够快
基于运行速度和开发效率的情况下,GO语言就因此诞生了
GO语言07年被设计
09年开源代码全球发布
15年,1.5版本发布
17年,1.8版本发布,1.9版本发布
18年,1.10版本发布

3.GO语言特点

GO保证静态编译语言的安全和性能,又保证动态语言开发维护的高效率,一句话形容,运行速度快开发效率高,GO=python+php/c

  • 保留c语言的基础数据类型,参数传递,表达式语法,指针等
  • go语言的每个文件必须属于一个包,不能单独存在
  • 垃圾自动回收,不需要开发管理
  • 支持并发,轻量级线程(goroutine),高效利用多核,基于cps并发模型
  • 管道channel通信机制,实现不同goroute之间的相互通信
  • 写一个函数,可以返回多个值,go语言不用带;符号
  • 切片技术slice,延迟执行defer等
4.GO开发工具

go开发工具可以有:vscode,Eclipse,vim,LiteIDE,PyCharm,GoLand等
我使用的是vscode工具,支持多种插件

5.GO第一次使用

5.1打开vscode,下载go插件
在这里插入图片描述
5.2创建文件夹存放go文件,以.go结尾
在这里插入图片描述
5.3go语言运行hello Golang

package main   //将test.go 归属于main
import "fmt"   //引入一个fmt包
func main() {  //固定格式
		//输出hello Golang
	fmt.Println("hello Golang")
}

在这里插入图片描述

6.GO开发环境SDK安装配置

现在有了go开发工具vscode,还需要一个开发环境就是SDK

6.1SDK的介绍
SDK(Software Development Kit软件开发工具包):提供给开发人员使用的,包含了对应开发语言的工具包
go语言想要跑代码,只有源代码不行,还需要SDK提供的工具和API编译成可执行文件

SDK下载地址:https://go.dev/dl/

pkg为图形化
tar.gz为压缩包

我是在linux下运行的vscode,所以下载的linux amd64的包
在这里插入图片描述
6.2SDK解压安装包

windows下安装步骤

  • windows下傻瓜式安装下一步即可
  • windows下配置环境变量配置:
GOROOT:指定SDK的安装路径
Path:添加SDK的bin目录
GOPATH:工作目录

在控制面板的系统中配置系统变量
GOROOT对应 D:\goinstall\go (go安装的目录)
没有Path变量就添加,有Path就编辑 末尾加;%GOROOT%\bin
GOPATH对应的目录是go项目对应D:\goproject

linux下安装:

  • 解压SDK包
[root@blog workspace]# pwd
/data/docker-data/vscode/workspace
[root@blog workspace]# tar -xf go1.17.6.linux-amd64.tar.gz
[root@blog workspace]# ls
go  go1.17.6.linux-amd64.tar.gz
[root@blog workspace]# cd go
[root@blog go]# ls
api      bin             CONTRIBUTING.md  doc  LICENSE  PATENTS  README.md    src   VERSION
AUTHORS  codereview.cfg  CONTRIBUTORS     lib  misc     pkg      SECURITY.md  test
[root@blog go]# cd bin/
[root@blog bin]# ls
go  gofmt
#k看到go的版本号1.17.6
[root@blog bin]# ./go version
go version go1.17.6 linux/amd64
  • 配置环境变量
 #在 /etc/profile.d/GO.sh 下添加三条内容
 [root@blog ~]# echo  "export GOROOT=/data/docker-data/vscode/workspace/go" >> /etc/profile   #go安装的目录
[root@blog ~]# echo  "export PATH=$PATH:$GOROOT/bin" >> /etc/profile             #环境变量的目录
[root@blog ~]# echo  "export GOPATH=$HOME/goproject" >> /etc/profile             #go项目的目录
#查看一下文件的最后三条
[root@blog ~]# tail -n3 /etc/profile
export GOROOT=/data/docker-data/vscode/workspace/go
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data/docker-data/vscode/workspace/go/bin
export GOPATH=/root/goproject
#看到版本则显示成功
[root@blog ~]# go version
go version go1.17.6 linux/amd64
7.GO开发目录结构
goproject/    
└── src
    └── go_code
        └── project01
            ├── main
            └── package

现在正式开发一个hello.go程序,输出hello world
第一步:编写hello.go文件
在这里插入图片描述
第二步:构建编译文件,运行

[root@Blog main]# go build hello.go 
[root@Blog main]# ls
hello  hello.go
[root@Blog main]# ./hello 
hello world

注意直接run和生成编译文件再执行的区别,后者速度快,工作时最常用

8.GO语言语法
  • 不需要加;符号
  • 区别大小写
  • 以.go结尾,并且go文件必须在一个包中
  • go编译器是一行行代码执行的,不能把多行代码写在一行
  • 引入的包或者声明的变量,必须全部用到,不能不用,负责报错
  • 大括号必须成对出现