Go语言入门指南 | 豆包MarsCode AI刷题

75 阅读8分钟
  • **文章内容:
  • 一、下载并安装Go
  • 二、配置VSCode
  • 1.下载或更新VSCode
  • 2.安装相关扩展
  • 三、Go的基础语法**
一、下载并安装Go:

下载链接:Go下载

选择对应系统的版本即可,例如我是windows,所以选择如下图

image.png

接下选择自己的安装路径,傻瓜式安装即可。

安装完成后,Win + R 打开输入 cmd 打开命令行窗口,然后输入 `go version` 可以查看 Go 的版本:

image.png

如果没有显示版本号,可能是你在安装 Go 的时候已经打开了命令行窗口,此时关闭所有的命令行窗口后,再重新打开一个命令行窗口输入 go version 重试一次就好了。

二、配置VSCode

1、下载或更新 vscode

如果安装的 Go 是最新的版本,但是因为 vscode不是最新的版本,有可能导致通过 vscode 安装的相关扩展的版本很低,从而出现了一系列问题。

所以,如果你还没安装 vscode 直接去下载最新的 vscode。

如果你已经有 vscode 了,可以检查一下版本是否是最新版,方法如下:

打开 vscode → 顶部导航栏 → help → check for updates:

如果是以下这种情况就证明你的vscode是最新版

image.png

2、安装相关扩展

先安装 Go 扩展:

image.png 接着进行联网操作:

  1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
  2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮
  3. 在 “变量名” 输入框并新增 “GOPROXY”
  4. 在对应的 “变量值” 输入框中新增 “proxy.golang.com.cn,direct”
  5. 最后点击 “确定” 按钮保存设置

更新 Go 工具:

`ctrl + shift + P` 搜索 `Go: Install/Update Tools`:

image.png

image.png vscode 底部的输出端(output)可以看到安装情况:慢慢等,7个插件的安装情况都显示succeed即为安装成功,到这边就大功告成,可以开启你的Go学习历程了!

三、Go的基础语法

1.变量: go语言是一门强类型语言,每一个变量都有它自己的变量类型。 常见的变量类型包括 字符串 整数 浮点型、布尔型等。 go 语言的字符串是内置类型,可以直接通过加号拼接,也能够直接用等于号去比较两个字符串。 在go语言里面,大部分运算符的使用和优先级都和 C 或者 C++ 类似,这里就不再概述。 下面讲述go语言里面的变量的声明,在go语言里面变量的声明有两种方式,一种是通过 var name string = "" 这种方式来声明变量,声明变量的时候,一般会自动去推导变量的类型。如果有需要,你也可以显示写出变量类型。另一种声明变量的方式是: 使用变量 冒号 := 等于值。 下面来讲说常量。常量的话就是把 var 改成const,值在一提的是go语言里面的常量,它没有确定的类型,会根据使用的上下文来自动确定类型。

image.png

image.png接下来介绍 go语言 里面的 if else。go语言 里面的 if else 写法和 C 或者 C++ 类似。不同点1是 if 后面没有括号。如果你写括号的话,那么在保存的时候你的编辑器会自动把你去掉。第二个不同点是 Golang 里面的if ,它必须后面接大括号,就是你不能像 C 或者 C++ 一样,直接把 if 里面的语句同一行。

image.png

image.png 下面讲述go语言里面的循环, 在go里面没有 while 循环、do while 循环,只有唯一的一种 for 循环。最简单的 for 循环就是在 for 后面什么都不写,代表一个死循环。循环途中你可以用 break 跳出,也可以使用经典的 C 循环,就是 for I 等于0, I 小于 NI 加加。这中间三段,任何一段都可以省略。 在循环里面,你可以用 break 或者 continue 来跳出或者继续循环,

image.png

image.png 下面是关于 switch 分支结构,go语言里面的 switch 分支结构。看起来也 C 或者 C++ 比较类似。同样的在 switch 后面的那个变量名,并不是要括号。 这里有个很大的一点不同的是,在c++里面, switch case 如果不显示加 break 的话会然后会继续往下跑完所有的 case, 在go语言里面的话是不需要加 break 的。 相比 C 或者 C++ , go语言里面的 switch 功能更强大。可以使用任意的变量类型,甚至可以用来取代任意的 if else 语句。你可以在 switch 后面不加任何的变量,然后在 case 里面写条件分支。这样代码相比你用多个 if else 代码逻辑会更为清晰。

image.png

image.png 下面我们来介绍一下数组。数组就是一个具有编号且长度固定的元素序列。比如这里的话是一个可以存放 5 个int元素的数组 A 。 对于一个数组,可以很方便地取特定索引的值或者往特定索引取存储值,然后也能够直接去打印一个数组。不过,在真实业务代码里面,我们很少直接使用数组,因为它长度是固定的,我们用的更多的是切片。

image.png

image.png 切片不同于数组可以任意更改长度,然后也有更多丰富的操作。比如说我们可以用 make 来创建一个切片,可以像数组一样去取值,使用 append 来追加元素。 注意 append 的用法的话,你必须把 append 的结果赋值为原数组。 因为 slice 的原理实际上是它有一个它存储了一个长度和一个容量,加一个指向一个数组的指针,在你执行 append 操作的时候,如果容量不够的话,会扩容并且返回新的 slice。 slice 此初始化的时候也可以指定长度。 slice 拥有像 python 一样的切片操作,比如这个代表取出第二个到第五个位置的元素,不包括第五个元素。不过不同于python,这里不支持负数索引

image.png

image.png 下面我们介绍 map, 在其他编程语言里面,它可能可以叫做哈希或者字典。 map 是实际使用过程中最频繁用到的数据结构。我们可以用 make 来创建一个空 map ,这里会需要两个类型,第一个是那个 key 的类型,这里是 string 另一个是 value 的类型,这里是 int 。 我们可以从里面去存储或者取出键值对。可以用 delete 从里面删除键值对。 golang的map是完全无序的,遍历的时候不会按照字母顺序,也不会按照插入顺序输出,而是随机顺序。

image.png

image.png 下面来介绍range。对于一个 slice 或者一个 map 的话,我们可以用 range 来快速遍历,这样代码能够更加简洁。 range 遍历的时候,对于数组会返回两个值,第一个是索引,第二个是对应位置的值。如果我们不需要索引的话,我们可以用下划线来忽略。

image.png

image.png 这个是 Golang 里面一个简单的实现两个变量相加的函数。 Golang 和其他很多语言不一样的是,变量类型是后置的。 Golang 里面的函数原生支持返回多个值。在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是一个错误信息。

image.png

image.png go里面也支持指针。当然,相比 C 和 C++ 里面的指针,支持的操作很有限。指针的一个主要用途就是对于传入参数进行修改。 我们来看这个函数。这个函数试图把一个变量+2。但是单纯像上面这种写法其实是无效的。因为传入函数的参数实际上是一个拷贝,那也说这个+2,是对那个拷贝进行了+2, 并不起作用。如果我们需要起作用的话,那么我们需要把那个类型写成指针类型,那么为了类型匹配,调用的时候会加一个 & 符号。

image.png

image.png 下面能介绍结构体。结构体的话是带类型的字段的集合。 比如这里 user 结构包含了两个字段,name 和 password。我们可以用结构体的名称去初始化一个结构体变量,构造的时候需要传入每个字段的初始值。也可以用这种键值对的方式去指定初始值,这样可以只对一部分字段进行初始化。同样的结构体我们也能支持指针,这样能够实现对于结构体的修改,也可以在某些情况下避免一些大结构体的拷贝开销。

image.png

image.png 在 Golang 里面可以为结构体去定义一些方法。会有一点类似其他语言里面的类成员函数。 比如这里,我们把上面一个例子的 checkPassword 的实现,从一个普通函数,改成了 结构体方法。 这样用户可以 像 a.checkPassword(“xx”) 这样去调用。 具体的代码修改,就是把第一个参数,加上括号,写到函数名称前面。 在实现结构体的方法的时候也有两种写法,一种是带指针,一种是不带指针。这个它们的区别的话是说如果你带指针的话,那你那么你就可以对这个结构体去做修改。如果你不带指针的话,那你实际上操作的是一个拷贝,你就无法对结构体进行修改。

image.png

image.png

以上就是本文章的全部内容,感谢观看!