这是我参与「第五届青训营 」伴学笔记创作活动的第 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的方法