[后端1-青训营笔记]

64 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

===================================

===

一.环境配置

go版本-go1.19.5

开发工具

goland-2022.2.2专业版

二.基础语法

1.变量

var表示变量

var 表示符 类型 = .....

 var a int = 10

简写

 a := 10

重点:

  1. 未初始化就给默认值

  2. 声明变量就必须使用

  3. 根据值自行判定变量类型

2.常量

定义语法 : const identifier type = value(同样type可以省略)

 const a string = "abc"

多常量定义(变量同)

 const a, b, c = 1, false, "str"

3.判断语句

 if flag == true {     fmt.Println(flag) }else{     continue }

重点:

  1. 每一个if else 都需要加大括号

  2. else位置不能在新一行

  3. if后面不写小括号(写了也没用)

4.循环

Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。

和 C 语言的 for 一样:

 for init; condition; post { }

和 C 的 while 一样:

注:go语言没有while循环

 for condition { }

和 C 的 for(;;) 一样:

 for { }
  • init: 一般为赋值表达式,给控制变量赋初值;

  • condition: 关系表达式或逻辑表达式,循环控制条件;

  • post: 一般为赋值表达式,给控制变量增量或减量。

举个例子:

for num := 1; num < 10; num++ {	fmt.Println(num)}

5.函数

定义格式

func function_name( [parameter list] ) [return_types] { 函数体 }

函数定义解析:

  • func:函数由 func 开始声明

  • function_name:函数名称,参数列表和返回值类型构成了函数签名。

  • parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。

  • return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。

  • 函数体:函数定义的代码集合。

    func max(num1, num2 int) int { var result int if (num1 > num2) { result = num1 } else { result = num2 } return result}

6.数组

  1. 声明数组

var balance [10]float32

  1. 初始化数组

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

  1. 如果设置了数组的长度,我们还可以通过指定下标来初始化元素:

    // 将索引为 1 和 3 的元素初始化balance := [5]float32{1:2.0,3:7.0}

7.指针

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

指针定义:

varip *int

指向整型

var a int= 20   /* 声明实际变量 */var ip *int        /* 声明指针变量 */ip = &a  /* 指针变量的存储地址 */

8.切片

不同与数组,切片是可变长列表

定义:

  1. 未指定数组定义切片

    var a []int

  2. make函数

    var a = make([]int, 10)

9.map

键值对数据结构

定义:

m := make(map[string]int)m["one"] = 1

遍历:

for k,v := range m{    fmt.Println(k,v)}

10.结构体

定义:

type Books struct {   title string   author string   subject string   book_id int}

初始化:

// 创建一个新的结构体    fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407})    // 也可以使用 key => value 格式    fmt.Println(Books{title: "Go 语言", author: "www.runoob.com", subject: "Go 语言教程", book_id: 6495407})    // 忽略的字段为 0 或 空   fmt.Println(Books{title: "Go 语言", author: "www.runoob.com"})}

访问:

var book Books book.book_id = 10

结构体方法:

func (book Books) getid(book Books) int{    return book.book_id;}

带指针可以修改结构体

总结:第一次学习go语言,非常有特色

个人感觉go = js+c+python

go语言垃圾回收机制和处理并发早有耳闻,上手还是比较迅速,但是学习是最好伴着其他如Coland圣经一起看,做好查漏补缺才是程序员的第一步

学习时我是带着java的滤镜去看的,思想上还是比较简单,期待后续的学习