Go 基础语法学习笔记 | 青训营

97 阅读3分钟

知识点

1.Hello World

package main

import (
	"fmt"
)

func main() {
	fmt.Println("hello world")
}

在终端用go run main.go 运行,可以看到hello world的输出。 go run 命令执行两项操作。 它编译应用,并在编译成功后执行应用。

2.变量

  • go是强类型语言,每一个变量都有自己的变量类型。
  • 大部分运算符的使用和优先级都和c类似。
  • 可以通过var 变量 = 值来声明变量。
  • 也可以通过 变量 := 值 来声明变量。
  • 变量声明时会自动推导变量类型,如有需要也可以显示写出变量类型。
  • 变量名必须以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。
  • 如果声明了变量但未使用,Go 会抛出错误

3.if else

if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

if else写法也和c语言类似。 不同之处在于:

  • if后的判断不需要括号,如果写了编辑器也会去掉。
  • if后执行的语句必须放在大括号中。

4.循环

go语言中的循环只有for循环,没有while和do while循环。

  • for后面什么都不写代表一个死循环。
  • 可以使用经典的c循环,其中任意一段都可以省略。
    • 和if else一样,条件不需要加括号
  • 循环中,可以使用break跳出或者使用continue继续循环。

5.switch

go的switch语句在每一个case运行结束后不需要break就可以直接退出。 go语言的switch可以使用任意的变量类型,可以不加任何变量在case中写条件分支来代替if else语句。

6.数组

声明数组,必须定义其元素的数据类型以及该数组可容纳的元素数目。 如果你不知道你将需要多少个位置,但知道数据元素集,那么还有一种声明和初始化数组的方法是使用省略号 (...):

q := [...]int{1, 2, 3}
  • 实际开发中我们很少直接使用数组,使用更多的是下面要介绍的切片

7.切片slice

slice由三个组件组合

  • 指向基础数组中第一个可访问元素的指针
  • 切片的长度
  • 切片的容量

可以运用s[i:p]切片。 可以用append来追加元素,容量不够时会自动扩容。

8.map

是一个哈希表。 可以使用make()来创建map。 go语言的map是无序的,并不会按照插入顺序或是字典顺序遍历。

9.结构体

要声明结构,需要使用 struct 关键字,还需要新数据类型具有的字段及其类型的列表。

type People struct {
    Age        int
    FirstName string
    LastName  string
}

然后就可以用var jack Pelple来声明一个结构体变量。 访问字段使用.来访问,例如

jack.Age = 21
fmt.Println(jack.age)

10.函数

使用func关键字来定义函数。 go与很多其他语言不同的是go的变量类型是后置的。 支持返回多个值,实际业务中几乎所有函数都返回两个值,第一个是真正的返回结果,第二个是错误信息。_ 变量是忽略返回值的惯用方法。

11.指针

go中的指针支持的操作有限,主要用途是对传入参数进行修改。 可以用&运算符获取一个变量的指针

个人思考

因为在此之前没有接触过go语言,所以这次上课学习还是有些偏快,下课后我也去看了一些文章文档,对go语言有了初步的认识。

学习建议

可以去看一下go语言相关的文档,然后自己动手跟着写一些代码,会对语法有更深的理解。