Go语言基础语法 | 青训营笔记

71 阅读3分钟

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

1. go语言的Hello World!

go程序的入口点是main包
使用import导入包,其中fmt是go语言负责输入输出,格式化字符串的包
import()是go导入多个包的语法
同时go语言语句结尾不需要加分号

package main//程序入口包

import (
    "fmt"//导入fmt标准库
    ...
)

func main(){
    fmt.Println("Hello World!")//输出Hello World!并换行
}

2.go语言的变量声明

go语言是强类型语言
go语言的类型声明是后置的
var a = "123" 声明变量a为字符串类型并赋值为"123",类型自动推导
var b,c int= 123 同时声明变量b,c为int类型并赋值为123
var d = true 声明d为布尔值并赋值为true
var e float64 声明float64也就是double类型的变量e
f := 123 声明变量f并同时初始化为123,类型自动推导为int
const g := 114514 声明常量g并同时初始化为114514,类型自动推导为int

3.go语言的条件判断语句

go语言的if else 语句不需要写(),同时必须写{}

4.go语言的循环

go语言的循环不像其他语言没有多的关键字,就是for关键字的各种变种
死循环 for {}
经典循环 for i:=0;i<10;i++{}
while循环 for i<10{}
continue关键字和break关键字同其他语言一样

5.go语言的switch语句

go语言的switch不需要加break语句,会自动加,如果想继续往下执行可以使用fallthrough关键字 同时go语言的switch语句功能更为强大,支持结构体,甚至可以直接替换if else ,通过使用

switch{
    case(if):
    case(else if):
    default(else):
}

6.go语言的数组和切片

数组是定长的,切片是不定长的。
声明数组,注意类型后置var a [5]int
创建切片var b = make([]string,5)
同时切片还有一些实用方法

7.go语言的map

创建一个map var m = make(map[string]int)
其中[string]为map的key int为value

8.go语言的foreach

使用range可以实现类似于其他语言foreach的效果,例如
遍历map for k,v := range m{} 其中k为key,v为value,如果哪个不需要可以使用_占位
遍历array for i,v := range a{} 其中i为数组的下标,v为value,如果哪个不需要可以使用_占位

9.go语言的函数

在go语言中函数是一等公民,声明函数的关键字是func,输入参数和返回值类型均后置
go语言的函数支持返回多个值,例如

func add(a1,a2 int) (result int,ok bool){
    return a1+a2,true
}

10.go语言的指针

go语言也支持指针,其用法与c语言差不多

11.go语言的结构体

声明结构体

type user struct {
    name string
    password string
}

初始化结构体a a:= user{name: "test",password: "password"}
go语言的结构体不管是指针还是纯值,都是使用.来读取它的字段

go语言的结构体还支持成员方法,通过在func后声明结构体变量实现

func (u user) checkPassword(password string) bool{
    return u.password==password
}

12.go语言的错误处理

go语言支持错误处理,需要导入errors
通过在函数返回值中加入一个错误类型error
在函数返回时调用errors.New(string)返回一个错误
调用函数时使用if else判断错误是否为nil实现错误处理

13.go语言的一些标准库

go语言的"strings"包中有一些常用的字符串处理方法
go语言的"encoding/json"包中有一些正反序列化Json的方法
go语言的"time"包中有一些时间处理的方法
go语言的"strconv"包中有一些字符串解析成数值的方法
go语言的"os"包中有一些调用操作系统api的方法