所谓的成功,就是用自己的方式度过人生。
学习资料
- The Go Programming Language
- Go语言中文网
- 菜鸟教程
- GitHub-Chinese-Top-Charts
- Go’s Declaration Syntax
- 雪花算法
- Go核心
- Go语言之旅
- 剑指Offer-Golang实现
- Golang面试题搜集
- go-interview
- 超全golang面试题合集
- 为什么Golang中不用this和self
- 新手可能会踩的50个坑
Nginx反向代理Go
一、安装nginx
二、安装go
三、代码
- cd ~/go/src && mkdir web
- vim test.go
1 | package main |
- 运行
go run test.go
,浏览器打开localhost:9090
,可看到终端输出
1 | This is func another |
四、设置反向代理
- 进入nginx配置目录
cd /path/nginx/conf/vhost
- vim go.conf
1 | server { |
- 运行
go run index.go
,浏览器打开localhost:8081
,可看到对应输出
Go语言文件读取的几种方式
一、基础
读取文件有三种方式:将文件整个读入内存、按行读取、按字节数读取。
将文件整个读入内存
按行读取
按字节读取
二、参考
Go语言实现OOP
一、基础
Golang是支持面向对象编程特性的语言,不过在Golang中没有类的概念,而是一些别的方式来实现。
struct:通过给结构体类型定义方法实现传统OOP中的方法,具体做法是在方法当中定义接收者(类型接收者或指针接收者),位于func关键字和方法名之间。
- 当接收者是指针类型时,调用时和类型接收者一样,Golang内部会自动转化
- 结构体是值类型
- 结构体的所有字段在内存中是连续的
- 结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的属性(名字、个数、类型)
- 结构体进行type重新定义(相当于取别名),Golang认为是新的数据类型,但是相互间可以强转
- 结构体的每个字段上可以写上一个tag,该tag可以通过反射机制获取,常见的使用场景就是序列化和反序列化
interface
- interface是方法的集合,要实现一个接口,必须实现该接口里面的所有方法
- 如果一个interface没有任何方法,则称该接口为空接口,任何类型都实现了空接口,空接口可以作为任何类型数据的容器
- interface是Golang中实现多态的一种形式
- interface可以嵌套,可以简单理解为继承
- 子接口拥有父接口的所有方法,想要使用该子接口的话,则必须将父接口和子接口的所有方法都实现
- interface也可以进行类型转换
- interface只有方法声明,没有实现,没有数据字段
map
reflection
二、实现
封装
继承
多态
三、参考
指针操作:取地址&
和取值*
&
和取值*
一、基础
- 变量名前面添加
&
操作符(前缀)来获取变量的内存地址,即取地址操作 - 对指针使用
*
操作符,即指针取值操作
二、demo
1 | package main |
三、参考
括号匹配
1 | package main |
go-redis
一、基础
二、代码
1 | package main |
字符串全排列
一、代码
1 | package main |
二、参考
随机生成字符串
一、代码
- main_test.go
1 | package main |
- 运行
go test -bench=. -benchmem