维系笔记

连接过去、现在、未来


  • 首页

  • 关于

  • 分类

  • 标签

  • 归档

Go交叉编译windows程序

发表于 2020-01-10 | 分类于 GO |

在Mac下编译一个调用了 sqlite3 的程序。

安装 sqlite3

运行

1
2
go get github.com/mattn/go-sqlite3
go install github.com/mattn/go-sqlite3
阅读全文 »

GO HTTP测试

发表于 2019-12-19 | 分类于 Go |

当我们在写接口的时候避免不了的需要对接口进行测试。

标准库 net/http/httptest

这个包提供了 HTTP 测试使用工具。

Server

通过NewServer(handler http.Handler)方法可以创建HTTP服务对象 Server。这样在创建时将需要测试的接口 handler 传入,我们就可以测试这个接口了。

还有 NewTLSServer 创建使用TLS的服务器。

阅读全文 »

[Go 教程系列笔记]多态-Go中的OOP

发表于 2019-08-14 | 分类于 Go |

Go 中的多态性是在接口的帮助下实现的。正如我们已经讨论过的,接口可以在Go 中隐式实现。如果类型定义了接口中声明的所有方法,则类型实现接口。让我们看看在接口的帮助下如何在Go中实现多态性。

使用接口的多态性

任何定义了接口所有方法的类型都被称为隐式实现该接口。

接口类型的变量可以包含实现接口的任何值。接口的这个属性用于在Go中实现多态。

让我们在计算组织净收入的程序的帮助下理解Go中的多态性。为简单起见,我们假设这个想象中的组织有两种项目的收入。固定账单,时间和材料。该组织的净收入按这些项目的收入总和计算。为了简化本教程,我们假设货币是美元,我们不会处理美分。它将使用int。(我建议阅读 https://forum.golangbridge.org/t/what-is-the-proper-golang-equivalent-to-decimal-when-dealing-with-money/413 以了解如何处理美分。)

阅读全文 »

[Go 教程系列笔记]组合而不是继承-Go中的OOP

发表于 2019-08-14 | 分类于 Go |

Go不支持继承,但它确实支持组合。组合的通用定义是“放在一起”。组合的一个例子是汽车。汽车由车轮,发动机和各种其他部件组成。

通过嵌入结构组成

Go中的组合可以通过将一种结构类型嵌入到另一种结构类型中来实现。

博客文章是一个完美的组合示例。每篇博文都有标题,内容和作者信息。这可以使用组合完美地表示。在本教程的后续步骤中,我们将了解如何完成此操作。

阅读全文 »

[Go 教程系列笔记]结构而不是类-Go中的OOP

发表于 2019-08-14 | 分类于 Go |

Go 面向对象?

Go 不是纯粹的面向对象编程语言。摘自Go的常见问题解答,回答了Go是否面向对象的问题。

1
Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that we believe is easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous—but not identical—to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain, “unboxed” integers. They are not restricted to structs (classes).

在接下来的教程中,我们将讨论如何使用 Go实现面向对象的编程概念。与其他面向对象的语言(如Java)相比,它们中的一些在实现上有很大不同。

阅读全文 »

golang 数据结构 2

发表于 2019-08-13 | 分类于 Go |
  • channel
  • atomic
  • sync.Mutex
  • sync.WaitGroup
  • sync.Pool
  • sync.Map

channel

  • [Go 教程系列笔记] Channel 通道
  • [The way to go] 协程间的通信2

基本用法

阅读全文 »

golang 数据结构

发表于 2019-08-13 | 分类于 Go |

golang 常用数据结构

  • struct
  • array
  • slice
  • map

struct

基本用法

阅读全文 »

Makefile 学习笔记

发表于 2019-06-10 | 分类于 Tools |

make命令执行时,需要一个 Makefile文件,以告诉make命令需要怎么样的去编译和链接程序。

Makefile 像带有上下文的 shell 命令。将一组命令打包成一个标签名称。

Makefile的规则

target ... : prerequisites ...
    command
    ...

target

可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(Label)。

阅读全文 »

JWT 在 Gin 中的使用

发表于 2019-04-18 | 分类于 Go |

介绍

JSON Web Token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该 Token 被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 Token 也可直接被用于认证,也可被加密。

使用

安装

1
go get github.com/appleboy/gin-jwt

引入

1
import "github.com/appleboy/gin-jwt"

我目前使用的版本是 v2.5.0.

阅读全文 »

[转载] 内存,内存中的变量和指针

发表于 2019-04-18 | 分类于 Go |

http://golangtutorials.blogspot.com/2011/06/memory-variables-in-memory-and-pointers.html

编程中涉及处理内存中可用数据的机器指令。例如,当你想要添加两个数字时,这些数字必须在内存中可用。因此,你应该为此分配一些内存空间。在 Go 中,你可以使用初始化运算符轻松地为大多数类型执行这个操作。

1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func main() {
i := 5
var j int
fmt.Println("i is: ", i)
fmt.Println("j is: ", j)
}

结果:

1
2
i is: 5
j is: 0

阅读全文 »
12…5

Leon Xu

专注于后端开发,Golang,Docker,Ruby

48 日志
8 分类
41 标签
RSS
© 2020 Leon Xu
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4

粤ICP备14019409号-1