Go 语言入门极简指南:基础语法和常用特性解析——实践记录(后端) | 豆包MarsCode AI刷题

89 阅读4分钟

Go 语言入门极简指南:基础语法和常用特性解析——实践记录(后端) | 豆包MarsCode AI刷题

Go语言基础语法整理(极简版)

适合有C/C++基础的同学理解

1、基础运行:HelloWorld

大体思路

1、用 package main 表示文件属于 main 包的一部分

2、导入标准库的包(这里是fmt)

3、写主函数main()

大致样式

package main

import ( 内容 )

func main() { 内容 }

注意:没有分号!

Go不通过缩进来决定代码的逻辑层次。

具体代码
package main

import (
	"fmt"
)

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

2、量、数组、切片和map

2.1、变量&常量

变量类型:字符串、整数、浮点型、布尔型

类型可以不用刻意标明,统一用var即可,会自动识别

如果要声明类型,与C那样变量类型写在变量名前面不同,Go的变量类型写在变量名后面。

变量声明方式:

var name string = ""

或者

变量 := 值

常量就是把var改为const,常量没有确定类型,go语言自动确定。

2.2、数组

有编号且长度固定的元素序列。真实业务用的少(长度固定),更多用切片

2.3、切片slice

原理是存储了一个长度和一个容量,加一个指向数组的指针。

拥有像python一样切片的操作。

可以任意更改长度,可以用make创建一个切片,可以用append来追加元素。

2.4、map

可以理解为其他语言里面的哈希表或字典。

用make创建一个空map。

第一个是key的类型,第二个是value的类型。

可以从里面存储或取出键值对,用delete删除键值对。

map完全无序!遍历、输出时全部是随机顺序。

3、运行逻辑(条件、循环、选择、快速遍历)

3.1、if else

go语言里面的if后面没有小括号,且后面必须加大括号,其余与C相同。

3.2、for

go语言只有for循环,没有别的循环。

for循环后面没有小括号。

3.3、switch

go语言switch后面无小括号

在C++里面,switch case如果不 加break的话会然后会继续往下跑完所有的case,在go语 言里面不需要加break。

3.4、range

range可以用来快速遍历slice或map。

返回两个值,第一个是索引,第二个是对应位置的值,若不需要索引,用下划线来忽略。

4、函数、指针、结构体、结构体方法

4.1、函数

go语言中,函数的变量类型是后置的。

函数原生支持返回多个值,实际业务逻辑代码中也是返回两个值,第一个是真正结果,第二个是错误信息。

4.2、指针

相对C和C++,支持的操作有限。 go语言指针的一个主要用途是对于传入参数进行修改。

4.3、结构体

结构体是带类型的字段的集合。

4.4、结构体方法

类似于成员函数。

从普通函数,改成结构体方法的具体步骤是,把第一个参数,加上括号,写在函数名称前面。

实现结构体有两种方法,带指针和不带指针,带指针时,可以对结构体进行修改;不带指针时,无法对结构体进行修改。

5、字符串操作与格式化

标准库strings里面包含很多常用字符串工具函数。

包含Contains、Count、HasPrefix、HasSuffix、Index、Join、Repeat、Replace、Split、ToLower、ToUpper功能。

可以直接打印,也可以像C一样格式化打印。 用%v打印任何类型的变量。用%+v打印详细结果,用%#v更详细。 用%.2f打印需要留特定位数的浮点变量。

6、错误处理、JSON、时间、数字解析、进程信息

6.1、错误处理

errors包是包含错误处理的包。

函数一般返回两个值,如果无错误,返回结果和nil;如果有错误,返回nil和error。

一般用errors.New(内容)来创建一个新的错误。

6.2、JSON

JSON是轻量级数据交换格式。

将Go语言中的数据结构转换为JSON格式的字符串。用json.Marshal。

将JSON格式的字符串转换回Go语言中的数据结构。用json.Unmarshal。

6.3、时间

用time库来处理有关时间问题。

time.Now()获取当前时间

6.4、数字解析

用strconv库进行字符串转换。

用strconv.parseInt或strconv.parseFloat来解析一个字符串。

用Atoi把一个十进制字符串转成数字。用itoA把数字转成字符串。

6.5、进程信息

os和os/exec库来处理有关信息。

用os.Argv来得到程序执行的时候的指定的命令行参数。