interface 接口
1 | //https://learnku.com/articles/25488 |
Go 陷阱之 for 循环迭代变量
1 | var slice []func() |
Struct 与 面向对象
1 | type Human struct { |
异常处理
1 | func TestPanic(t *testing.T) { |
rand.Intn () 生成的是伪随机数
1 | rand.Intn() 函数是个伪随机函数, 不管运行多少次都只会返回同样的随机数, 因为它默认的资源就是单一值, 所以必须调用 rand.Seed(), 并且传入一个变化的值作为参数, 如 time.Now().UnixNano() , 就是可以生成时刻变化的值. |
beego 框架 model curd
1 | 定义要连接的数据库 main.go https://learnku.com/articles/26029#topnav |
php go的类
1 | <?php |
Go for PHP Developers: Structs vs Classes
1 | package main |
append 扩容
1 | package array |
go build
1 | 工作区是 Go 便捷管理项目的方式。一言以蔽之,它就是你系统上的一个目录,Go 可以在此 查找源码 文件,管理依赖包 还有 分发二进制文件。 当 Go 程序命中 import 语句,它就会去 Go 标准库 (*$GOROOT/src*) 中寻找响应的包。如果没找到,然后 Go 就会引用环境变量 GOPATH ,它是 Go 工作区目录的路径,然后再去 $GOPATH/src 目录下寻找这个包。 |
for 循环迭代变量
1 | var slice []func() |
实现 PHP 的密码加密解密
1 | package main |
截取中文
1 | first := "fisrt" |
动态规划
1 | 硬币问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?https://blog.mutoe.com/2019/dynamic-programming/ |
go php 对比学习
1 | https://learnku.com/golang/t/23385/from-a-php-engineers-point-of-view-go |
用Golang写爬虫
1 | package main |
go 实现一个简单的 mvc
1 | git clone https://github.com/jc91715/go-simple-mvc |
时间戳操作大全
1 | dateTime := time.Now() |
request
1 | package http |
golang代理
1 | export GO111MODULE=on |
递归打印杨辉三角
1 | package main |
JSON 解析
1 | package main |
go 的切片
1 | 对于 go 语言的数组,copy 和 view 是同时都存在的。 |
结构体的值传递和引用传递
1 | 值传递 |
实现继承
1 | package main |
###1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71如果之前学过 PHP 或者其他语言,可以知道实现一个接口,不仅需要实现其接口里的方法,也需要使用 implements 显式说明其实现了该接口。
go 则是 duck type,即像鸭子,那它就可以是个鸭子。也就是说,在 go 中,是要是结构体实现了某个接口指定的方法,那它就是实现了这个接口,不需要使用 implements 显式说明。
现在说一下接口优点,最大的莫过于控制反转和解耦。举个例子,比如设计一个发送短信的服务,我想接入阿里云与腾讯云的短信业务,此时应该如何设计比较好?是在最底层通过 type 分类来区分,还是在上层通过传入不同的服务,来对应发送不同的运营商短信比较优雅?其实看 laravel 框架上的实现就很明白了。
同时,go 中的多态的特性通过接口来展现的。
package main
import "fmt"
type Usb interface {
Start()
Stop()
}
type Phone struct {
Name string
}
func (p Phone) Start() {
p.Name = "张三" //这里对引用传递还是值传递的作用一样生效,所以这里没有变化
fmt.Println("手机开始工作了...")
}
func (p Phone) Stop() {
fmt.Println(p.Name) //李四
fmt.Println("手机停止工作了...")
}
type Carame struct {
Name string
}
func (c *Carame) Start() {
c.Name = "张三" //这里对引用传递还是值传递的作用一样生效,所以这里有变化
fmt.Println("相机开始工作了...")
}
func (c *Carame) Stop() {
fmt.Println(c.Name) //张三
fmt.Println((*c).Name) //张三
fmt.Println("相机停止工作了...")
}
type Computer struct {
}
//Usb是前面定义的接口,这里调用的2个函数,在结构体中一定都要有声明过,否则报错。
func (com *Computer) Working(usb Usb) {
usb.Start()
usb.Stop()
}
func main() {
var phone = Phone{}
phone.Name = "李四"
var carame = Carame{}
carame.Name = "李四"
var computer = Computer{}
//这里传入参数是地址还是对象,需要依靠原结构体里定义的方法来判断(比如Phone结构体)。比如Phone结构体中的start方法是p,此时Working传入对象还是地址都可以。如果是*p,则必须传入地址。与com的类型无关。
computer.Working(&phone)
computer.Working(&carame)
//最后输出
// 手机开始工作了...
// 李四
// 手机停止工作了...
// 相机开始工作了...
// 张三
// 相机停止工作了...
}
https://learnku.com/golang/t/32266
面向对象特性
1 | 接口使用 interface 关键字声明,任何实现接口定义方法的类都可以实例化该接口,接口和实现类之间没有任何依赖 |
使用 Proxy 突破网管的限制
1 | https://gitee.com/snail/proxy |
go 执行系统命令时不能直接使用管道符
1 | 方法一(异步) |
实现一个 web 服务器
1 | package main |
Go 爬虫框架
1 | https://github.com/zhshch2002/goribot |
###go命令行1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21go get -u github.com/cosmos72/gomacro
λ gomacro.exe
// GOMACRO, an interactive Go interpreter with generics and macros
// Copyright (C) 2018-2019 Massimiliano Ghilardi <https://github.com/cosmos72/gomacro>
// License MPL v2.0+: Mozilla Public License version 2.0 or later <http://mozilla.org/MPL/2.0/>
// This is free software with ABSOLUTELY NO WARRANTY.
//
// Type :help for help
gomacro> a:=1
gomacro> a
1 // int
go get -u github.com/motemen/gore/cmd/gore
❯ gore
gore version 0.4.1 :help for help
gore> a := 1
1
gore> a + 2
3
gore> func Add(a, b int) int { return a + b }
gore> Add(1, 2)
3
go cron 秒
1 | package main |
Go 使用反射导出 Excel
1 | type Record struct { |
Redis 解析工具
1 | https://github.com/8090Lambert/go-redis-parser |
golang gin + gorm + seesion 完成 Laravel 的 make:auth
使用 go 的 gin 和 gorm 框架来构建 RESTful API 微服务
完整视频代码及学习资料-Zinx 框架-Golang 轻量级 TCP 并发服务
Golang+gin+vue+MySQL blog https:/www.iphpt.com
YouTube download library and CLI written in Go
go-Laravel-broadcast 实现 Laravel 的即时通讯
miniblink+golang 开发 Windows gui 应用