【青训营】Go语言的基本语法
创始人
2024-05-15 21:16:48
0

一、 配置Go语言及其开发环境

在这里插入图片描述
在这里插入图片描述
Mac配置:http://t.zoukankan.com/zsy-p-6685889.html
https://wenku.baidu.com/view/8aeec92b15fc700abb68a98271fe910ef12daeaf.html?wkts=1673764660043&bdQuery=%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AEgo+pathmac

二、基础语法

package mainimport ("fmt" // 引入输入输出包fmt
)func main() { //主要函数mainfmt.Println("HelloWorld")
}

使用以下命令运行该代码

go run \main.go

使用以下命令可以将该代码编译成二进制文件

go build \main.go

1.变量类型

主要变量包括整形、字符型、布尔型和字符串,其中字符串为内置类型,两个字符串的拼接可以用+直接拼接,两个字符串的比较也可以直接实用等于号

定义变量的方法如下:

var a = 10086	//定义变量a,这种方法定义变量不需要指明类型
f := float32(e)	// 定义变量f,这种定义方法可以知名类型
const h = 50000 // 定义常量,常量无固定类型,根据使用时确定类型,但是其二进制形式保持不变

使用案例如下:

package mainimport "fmt"func main() {var a = "init"var b, c int = 1, 2var d = truevar e float64f := float32(e)g := a + " foo"fmt.Println(a, b, c, d, e, f, g)
}

2.选择语句

go语言的if中无括号,而后面必须加大括号

import "fmt"func main() {if 7%2 == 0 {fmt.Println("7 is even")} else {fmt.Println("7 is odd")}
}

switch语句
go使用switch语句一旦遇到了合适的case则会执行并跳出switch,不需要使用break跳出。并且go的switch语句可以不写switch条件,而直接在case中写条件。这可以用于替代多个if-else语句,并且拥有更高的性能。示例如下:
switch语句


func main() {a := 2switch a {case 1:fmt.Println("one")case 2:fmt.Println("two")}t := time.Now()switch {case t.Hour() < 12:fmt.Println("morning")case t.Hour() >= 12 && t.Hour() < 18:fmt.Println("afternoon")}
}

3.循环语句

for语句

package mainimport "fmt"func main() {l := 1for {fmt.Println("loop")break}for j := 7; j < 9; j++ {fmt.Println(j)}for n := 0; n < 5; n++ {if n%2 == 0 {continue}fmt.Println(n)}for l <= 3 {fmt.Println(l)l++}
}

4.数组

func main() {var a [5]inta[4] = 100fmt.Println(a[4], len(a))b := [5]int{1, 2, 3, 4, 5}fmt.Println(b)}

5.切片slice

切片是可变长的数组,比定长数组使用得更频繁


func main() {s := make([]string, 3) // 使用make函数新建数组s[0] = "a"s[1] = "b"s[2] = "c"fmt.Println(s)s = append(s, "d") // 在切面后面追加元素s = append(s, "e", "f")fmt.Println(s)c := make([]string, len(s))copy(c, s) //复制切片操作// 切片的切片操作fmt.Println(c[3:])fmt.Println(c[:4])fmt.Println(c[1:3])
}

6.Map

func main() {m := make(map[string]int) // 创建一个key为string,value为int的mapm["one"] = 1              // 添加操作m["two"] = 2fmt.Println(m)fmt.Println(m["one"]) // 查询操作delete(m, "one") //删除操作
}

7.Range

对于slice或者map可以使用range快速遍历,使用起来更方便,示例如下

func main() {nums := []int{2, 3, 4}sum := 0for i, num := range nums {sum += numif i == 2 {fmt.Println("index", i, ",value", num)}}fmt.Println(sum)m := map[string]string{"a": "A", "b": "B"}for k, v := range m {fmt.Println(k, v)}
}

对切片的range会返回切片的下标和对应的值,而对于map的range则会返回其键值对。

8.函数

函数中变量类型倒置,可以返回多个返回值,其结构如下:

func 函数名(形式参数) 返回值 {}

返回值有多个的时候使用()将其括起来

9.指针

10.结构体

为结构体定义方法。带指针的结构体方法可以对结构体进行修改
可以将某个函数定义为某个结构体所属的函数,类似于Java中的成员类型,其格式如下

func (结构体变量名 结构体名)函数名(参数) (返回值类型){ }

如果传入的是结构体指针,则可以在函数内对结构体进行修改

type user struct {name     stringpassword string
}
func (u user)checkPassword(password string)bool{return u.password == password
}
// 在函数内对原结构体进行修改,需要传入指针
func(*u user)resetPassword(password string){u.password = password
}

错误处理

字符串操作

格式化输出
使用%v输出任意类型,%+v打印出字段名和值,%#v会打印出结构体和其中的值和字段名

JSON操作

JSON的序列化和反序列化
结构体中将所有字段名都首字母大写便可通过Marshal()函数进行序列化转化为JSON对象

字符串转化

0表示自动识别原字符串进制

进程信息

相关内容

热门资讯

因买卖合同纠纷,湘佳股份起诉太... 天眼查APP显示,近日,湖南湘佳牧业股份有限公司新增一则开庭公告,案由为“买卖合同纠纷”,原告为湖南...
每周股票复盘:沈阳机床(000... 截至2025年10月10日收盘,沈阳机床(000410)报收于7.47元,较上周的7.22元上涨3....
每周股票复盘:*ST生物(00... 截至2025年10月10日收盘,*ST生物(000504)报收于8.91元,较上周的9.45元下跌5...
【致同研究之年报分析】收入准则... 致同连续多年持续跟踪研究上市公司年报执行企业会计准则情况,正陆续发布“上市公司年报分析之准则应用披露...
每周股票复盘:青山纸业(600... 截至2025年10月10日收盘,青山纸业(600103)报收于3.53元,较上周的3.68元下跌4....
南京大屠杀幸存者唐复龙离世 其... 侵华日军南京大屠杀遇难同胞纪念馆10月11日晚通报,南京大屠杀幸存者唐复龙于10月9日离世,享年90...
全国首个!浙江全面推行中小学春... 记者10月11日从教育部门确认, 浙江11个地级市已全部发布推行中小学春秋假制度的相关文件,标志着浙...
江苏省药监局行政审批处设立“行... 为深入推进作风建设走深走实,优化政企沟通效能,提升行政审批服务质效,江苏省药监局行政审批处近期推出便...
警方发布《悬赏通告》,国台办:... 10月11日,国务院台办发言人陈斌华答记者问。 问:今天上午,厦门市公安局发布《悬赏通告》,向社会悬...
全国多地中小学探索春秋假制度,... 10月10日,“绍兴发布”公众号发布文章称,近日,《绍兴市教育局等十四部门关于实施中小学春秋假制度的...