avatar

目录
GO语言学习笔记DAY1

GO语言学习笔记 DAY 1

前言

​ 由于本人会的语言不多,python,c,汇编只能算了解,不能算会,说会,这个词不知道如何定义会,只是能用他们实现一些需求,python用的多一点,安全方面,写个脚本写个爬虫,也算挺方便的。最近接触到了golang,瞬间被他所吸引,性能不错,而且也比较多功能,对比与java而言,性能也是高了不少,社区环境也不错,感觉未来大有作为,而且也可以实现大多数需求,为此,我打算抽出一段时间学习go语言。

1.环境安装

​ 我的环境实在windows下部署的,后面可能考虑到部署到Linux上,因为我的个人pc不是很方便,我现在用的是go+vscode。这个配置也比较简单。

首先你得有VSCODE,这个就不说了,你用其他编辑器也OK,自己喜欢就行。

Windows上go安装简直是傻瓜式的,直接下载,自己打开msi文件,指定一个安装路径,然后配置系统变量。

https://golang.google.cn/dl/

在上边的地址下载对应版本的golang。

前面的过程类似java,但是在配置vscode的时候,我们需要注意一下,

image-20191227191958912

首先搜索go,第一个就是,安装,然后去配置一下json文件。

image-20191227192239208

输入setting 查到go config字样的字段,点击编辑json的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
"go.buildOnSave": "workspace",
    "go.lintOnSave": "package",
    "go.vetOnSave": "package",
    "go.buildTags": "",
    "go.buildFlags": [],
    "go.lintFlags": [],
    "go.vetFlags": [],
    "go.coverOnSave": false,
    "go.useCodeSnippetsOnFunctionSuggest": false,
    "go.formatOnSave": true,
    "go.formatTool": "goreturns",
    "go.goroot": "G:/GO", #这里修改成你的go目录
    "go.gopath": "G:/GOPATH", #这里修改成你配置的环境变量
    "go.gocodeAutoBuild": false,
    "files.autoSave":"onFocusChange",
    "launch": {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "GoLaunch",
          "type": "go",
          "request": "launch",
          "mode": "debug",
          "remotePath": "",
          "port": 2345,
          "host": "127.0.0.1",
          "program": "${fileDirname}",
          "env": {
            "GOPATH":"E:/gowork"
          },
          "args": [],
          "showLog": true
        }
      ]
    }
}

按照我注释中的提示即可。(配置完成,重启vscode即可完成)。(过程比较简单,如果有问题,请留言,我看到了会及时回复)

2.GO语言的简单实践

2.1 Hello GO

​ 本来呢。我们在学习一门语言之前,我们会先巴拉巴拉这些语言有什么特性啊,当前应用领域啊,流行不流行啊,好不好工作啊,之类的。我们在这里也不说了,既然学习一门语言,肯定有多方面因素啦。

​ 首先我们老生长谈,从hello.go开始,每一门语言的必修课。

​ 构建一个hello.go程序,写入以下代码。

go
1
2
3
4
5
1 package main
2 import "fmt"
3 func main(){
4 fmt.Printf("Hello World!\n")
5 }

到此为止我们的简单go输出就完成了,解释一下

第一行

main 学习语言肯定都有数,主要的意思,在这里go语言给我们定义一个可执行程序的包名,由于没有深入学习,在这里我猜想是一个程序的入口,如果我们一个程序好多文件,那么在这个目录下面GO在编译执行的时候回首先来找这个主要的MAIN包。在这里GO语言像C++那样通过包管理命名空间。

第二行

Import 这个在pyhton是无所不知的,我们用于引入一个包,就像C的Include,python的import一样,在这里面我们引入的fmt是我们的标准输入/输出包。

第三行 func mian(){}

主函数,程序的入口,主函数,类似于C语言。

第四行 调用fmt包里面的Printf函数,打印一个字符串出来(注意,不管是windows还是linux平台这里区分大小写)

在这里我们简单总结这一小节的内容

2.2 小结

通过如上,我们总结一下GO语言的几点基本特性。

​ 1 GO程序的后缀为 .go

​ 2 区分大小写

​ 3 函数开头是func 暂时没有见到定义的类型,后面的结构类似于C语言,方法调用基本与其他语言一致,利用.

由于我的程序是在VSCODE下执行的,编译与执行都一并了,如果我们在命令行情况下执行,那么我们先编译在执行

在Linux下面

go build hello.go

./hello

就可以产生以上效果。

3 GO语言基础

学习任何语言都必不可少的一关,便是我们找找关键字啊,学学规则啊,这里我们来简单的介绍一下GO语言的关键字,基础规则等等信息。

3.1 标识符

GO语言的标识符与C语言一样,数字字母下划线不能够以数字开头即可。

3.2 GO语言关键字

相对于其他语言GO语言只有25个关键字,这个相对来说很少了,真的很少。

我们分为三类

引导程序主体的关键字8个

go
1
2
3
4
5
6
7
8
package		//定义包名
import //导入包名
const //声明常量
var //声明变量
func //定义函数
defer //延迟执行关键字
go //用于并发
return //函数返回关键字

用于数据结构的关键字

go
1
2
3
4
struct    //定义结构类型的关键字
interface //定义接口给的关键字
map //创建map类型的关键字
chan //声明或者创建通道类型的关键字

控制程结构的关键字

go
1
2
3
4
if ···else···     //条件语句
for range break continue //for循环使用的关键字
switch select type case default fallthrough //switch和select语句使用的关键字
goto //跳转的关键字(这个貌似好多语言都给禁用了,因为这个很受争议)

3.3 GO语言数据类型

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
数值
byte int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64
complex64 complex128

字符串
string rune

接口
error

布尔型
bool

3.4 内置函数和标识符

内置函数

go
1
2
make  new  len  cap  append copy  panic  recover  close  complex  real  print  
println image

我们发现这里面也有许多我们的老朋友了。在这里面我们也来介绍一下一些我们的标识符。

标识符

go
1
2
3
true    false //真与假
iota //用于连续枚举的声明中
nil //指针,指针引用类型的默认值(PS:很头疼的指针又来了,涉及深点来说可以说是一个内存地址,不知道对不对当时学C语言的时候是这么理解的,后面学习好好思考,把这个问题搞明白)

3.5 操作符与分割符

这里面介绍一下GO语言的一些操作符,用于简化编程以及完成一些位运算。

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
算数运算符
+ - * / %

位于算符
& | ^ &^ >> <<

赋值运算符
:= = += -= *= /= %= |= ^= &^= >>= <<=

比较运算符
> >= < <= != ==

括号
() {} []

逻辑运算符
&& || !

自增自减
++ --

其他
; , : . ... <-

除此之外还有诸如好多概念,由于这里不是教材,我也不可能介绍的太细致,如果作为新手来说入门的话呢,实在不会可以先百度,不行呢我们在交流。

在这里我们通过对于这些基本内容的了解,我们也总结出来一个go语言程序的简单架构。

go
1
2
3
4
5
6
7
8
9
10
11
12
package   xxxx  //包名

import
"" //这里面引用各种需要的包



func xxx(){

函数

}

3.6 常量与变量

GO语言我观察到有一个从前没有见过的变量声明

:= 短变量生成,经过查阅,这个只能够在函数中生效。

正常的变量声明是

var 变量名 数据类型 = 值

我们可以在这个例子中看到

image-20200110211149823

变量实际是内存地址里面存放的值,具体的解析过程根据不同的数据类型来决定。GO语言的内存是自动管理回收的,实现十分灵活。

常量就是一个名称绑定一块内存地址,而且这个内存地址里面的东西不可变。在这里我也知道了这个iota标识符的作用,一开始我不知道这是干什么用的,这里解释一下iota用于常量声明,是一个自增的值,可以说是枚举变量。举个例子

go
1
2
3
4
5
6
7
8
9
const(

​ c0 = iota

​ c1 = iota

​ c2 = iota

)

这里面c0,c1,c2的值就分别变为0,1,2

3.小结

​ 这里简单的学习了一下go的基本语法,以及一些简单的内容,初步感觉这个在pyhton,java,c等语言有着一定的相同点,另外最近事情也比较多,一心也不能多用,可能一天也只能挤出来几十分钟的时间来学习GO语言,不过这只是个开始,后面我们会进行更加的深入。

文章作者: 青花@Blue_And_White
文章链接: https://www.evil-qinghua.me/2020/01/08/GO语言学习笔记 DAY 1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青花@Blue_And_White
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论