走进Go语言基础语言 | 青训营笔记

58 阅读2分钟

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

此笔记的主要内容如下

  • Go语言的背景介绍
  • Go语言的快速入门
  • Go语言的项目实战

基础语法

Hello World
package main

import (
    "fmt"
)

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

第一行 package main 表示这个文件属于main包的一部分,main包也就是程序的入口包,所以这个文件就是程序的入口文件。

第三行开始导入了标准库中的fmt包,格式化字符串。

第七行开始是main函数

变量

Go语言是一个强类型语言,每一个变量都有变量类型。

常见的变量类型有:字符串、整型int、布尔型、浮点型float、

两种变量声明方法:

// 第一种 var
var a = "initial" // 会自动推导变量a的类型
var b, c int = 1, 2 //也可以显式给出变量类型

// 第二种 :=
g := a + "foo"
if else
if 7%3 == 1 {
    expression 1
} else if 7%3 == 2 {
    expression 2
} else {
    expression 3
}

Go的if-else写法和C、C++、Java很类似,但不同点是,if条件不加括号

循环

Go中没有while循环,没有do-while循环,只有for循环

// 死循环: for后不加条件
for {

}

// “while循环”
for i <= 3 {

}
switch

Go中switch看起来和C、C++比较相似,但是Go中switch后变量名不加括号。

C\C++中每个case中如果不加break,会默认继续执行下一个case;但在Go中,是不会继续执行下一个case的。

数组

[]int

切片

切片不同于数组,是一个可变长度的数组,可以任意时刻去更改长度

用make创建一个切片 s := make([]string, 3)

切片可以用append去追加元素 s = append(s, "d")

可以用copy去拷贝切片

c := make([]string, 4)
copy(c, s)
map

make创建 m := make(map[string]int) 创建时需要两个类型,中括号中 string 是key的类型,中括号外int是value的类型

delete删除k-v对 delete(m, key)

range

对于数组会返回两个值 i, num := range nums,第一个 i 是索引,第二个num是对应位置的值

对于map k, v := range m,第一个返回值k是key,第二个返回值v是value

函数

Go中变量类型是后置的

func 函数名(形参1名 形参1类型[, 形参2名 形参2类型, ...]) [返回值名 返回值类型] {

}
指针

*int

结构体
type 结构体名 struct {
    字段1名 字段1类型
    ...
}

声明 a := 结构体名{字段1名:赋值1[, ...]}

调用 a.字段名

结构体方法

在Go中可以为结构体定义一些结构体方法

func (结构体变量名 结构体名) 结构体方法名(形参 形参类型[, ...]) [返回值 返回值类型] {

}