go语言基本语法
1 类型系统
1.1 struct
func new(t Type) *Type
s := new(Student)
new返回的是一个指针类型。
struct可以由匿名成员。
type man struct {
sex string
}
var man1 = new(man)
man1.age=11
1.2 变量的声明
1.2.1 使用var关键字声明
var a string;//声明一个string类型的变量a
1.2.2 不用var关键字
a := "hello"; //使用:=号就可以不用var关键字
这个时候编译器自动推断定义的变量的类型。
2 数据结构
数组
切片
映射
第一,创建映射
dict := make(map[string]string)
第二,初始化映射
dict := map[string]string{"red":"#da1337", "orange":"#e95a22"}
3 go函数
3.1 go函数的定义
func 方法名(参数列表) 返回值 {
定义
}
go函数可以返回多个返回值,调用函数的时候按照先后次序赋值即可。
3.2 defer函数
第一,defer函数在主函数体执行完之后执行;
第二,多个defer函数按照后进先出的顺序执行;
4 go方法
go方法就是在func关键字和方法名之间显示的声明了一个this关键字。
go不是面向对象的语言,但是它却通过go方法提供了类似对象的功能。java中提供了一个this指针,go没有,它要求在定义方法的时候显式的将这个this声明出来,这个声明放在func关键字和方法名之间。如果是值的话,那么只是调用者的副本,调用者本身不会被改变;如果是指针的话,那么调用者本人,调用者本身会被改变。
5 并发
5.1 goroutine
gorouting直接在声明处开始执行。
gorouting可以理解为go语言层面的线程,它使得并发变成变得简单。go语言自己有一个gorouting的调度器,从而实现并发。
默认是一个逻辑处理器,一个逻辑处理器可以理解为一个物理处理器。
5.2 通道
gorouting发送消息给通道,然后在主程序中获取消息。
6 特殊语法
go每行是一条语句,不需要分号。
7 循环
7.1 for循环
第一种,for init; condition; post {}
for a := 0; a < 10; a++ {
fmt.Printf("a 的值为: %d\n", a)
}
这个和java的一样,只是没有括号。
第二种,range格式对slice、map、数组和字符串进行迭代循环
for key, value := range oldMap {
newMap[key] = value
}
8 go的包
第一,import的是一个包,并不是一个文件,多个文件可以属于同一个包,这个由文件头的package指定包名;
第二,import时,路径一直到该文件的目录为止,该文件的目录名和该文件的包名相同;
第三,使用包的函数时,用包名+函数名的方式使用;
9 类型断言
9.1 什么是类型断言
所谓类型断言就是断言一个接口变量的类型,返回两个值,断言的布尔值和变量的具体值。
9.2 类型断言可以用来做什么
当我们只知道接口变量而不知道对象的具体的类型的时候,可以用类型断言获取接口变量下面具体的类型的值。
10 不妨将golang当成一个面向对象的语言来使用
抛弃golang的闭包,将之当成一种面向对象的语言来使用还是挺方便的。
相关文章
- Go 对象选择器自动解引用怎么用?
- 用go语言爬取珍爱网 | 第二回
- Kubernetes ImagePolicyWebhook与ValidatingAdmissionWebhook【4】main.go源码解析
- Go 了解 channel 管道
- go package学习目录
- Go程序设计语言3.6 常量
- 使用 Go 语言实现优雅的服务器重启
- go微服务示例(k8s istio grpc swagger postgres增量更新sql等功能)
- go版本升级
- 一文搞懂Go语言操作Redis
- go语言中的flag包有何作用
- [爬虫]采用Go语言爬取天猫商品页面
- Go语言 基本类型
- Go语言基本语法 (中)
- Go语言基本语法 (上)
- Go基础系列:函数(1)
- GO语言练习:switch基本用法
- GO语言练习:map基本用法
- Go语言 http 中的 request.Host 和 request.URL.Host 的区别
- 深入探索Go语言的unsafe包,揭秘它的黑科技和应用场景!
- 一文带你搞懂Go语言函数选项模式,Go函数一等公民。
- 【答读者问】把Go基础学完后,是学web方向还是区块链方向?
- Go语言为并发而生
- Go语言程序结构分析初探
- Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架
- Go语言开发环境搭建