如何使用VS Code调试Go代码

本教程将讨论使用 VS Code 调试 Go 代码所需的步骤。首先我们需要安装扩展、分析工具和调试器。

然后,我们将创建一个示例应用程序。最后,我们将探索如何使用断点和条件断点。

凭借这套技能,您将能够更好地理解应用程序在代码执行的特定点上的值和状态。

阅读更多

Golang 日志库

任何一个系统开发,都离不开完备的日志系统。go 日志不同其他语言,比如 java 由于 commons-logging 日志标准,和不同实现 如log4j,slf4j,logback,但都是统一调用标准接口;python 中标准logging 模块,功能强大,基本上满足各种需求。但是在golang 语言开发中,目前阅读了几个开源代码,都是自己实现了一套日志记录标准,并没有采用go 官方 log 模块。golang’s log 模块主要提供了3类接口。分别是 “Print、Panic、Fatal”,对每一类接口其提供了3中调用方式,分别是 “Xxxx 、 Xxxxln 、Xxxxf”,基本和fmt中的相关函数类似;但功能有限,很难比如按天,按照容量自动输出拆封生成新日志。如果自己开发一套日志,基本上要满足日志等级输出如DEBUG,INFO,WARN,ERROR/FATAL 、支持输出 console 或者滚动式文件、参数格式化输出、自定义格式化模板,当然如果支持更高级别如按照pakcage输出到不同文件,按照日志级别输出到不同地方那就更好了。

阅读更多

golang使用Zap日志库

1. zap 介绍

Golang Zap库是一个由Uber公司开发的高性能日志记录库,专为Go语言应用程序设计。Zap库以其出色的性能和灵活性而闻名,为开发者提供了结构化、分级别的日志记录功能,此外Zap库还支持日志切割功能,可以根据文件大小、时间或间隔等来切割日志文件,方便管理和分析。Zap库还支持自定义日志格式和输出方式。你可以通过配置Encoder来自定义日志的输出格式,包括时间戳、日志级别、调用文件/函数名和行号等信息。同时,你还可以将日志输出到不同的目的地,如控制台、文件或远程日志系统。

阅读更多

Golang单元测试

1. 前言

原文: How To Write Unit Tests in Go

Author: Tobi Balogun

译者:philoenglish.com团队; 更多资讯可访问philoenglish.com

单元测试是一种软件测试方法, 用于测试代码的最小可测试单元, 通常是函数或方法. 它的目的是确保每个单元都能够按照预期工作, 并且在修改代码时不会破坏现有的功能,它们是Go编程语言的关键部分。
在本教程中,您将创建一个小程序,然后使用Go的测试包和Go test命令对代码运行一系列测试。完成教程后,您将拥有一个可工作的单元测试套件,其中包括一个基于表表格的单元测试、一个覆盖率测试、一项基准测试和一个文档化的示例。

阅读更多

mockery v2的介绍和使用

1. 前言

由于项目时间比较紧, 我本来是没有打算写一篇文章来介绍mockery的, 但是无奈网上介绍mockery的文章比数量上较少(截至2023-04-27), 而且很多文章都过期了.
一方面由于golang更新比较快, 网上解释使用go get 安装mockery的, 到了go 1.6以后都安装不了. 另一方面mockery自身更新也比较快, 很多文章介绍的一些用法在新的版本中已经不灵了, 比如生成mock对象的命令选项-name已经调整为--name, -dir的意义也发生了变化等等, 出现了很多差异的地方.

所以本着稳扎稳打的原则, 不得不放慢脚步, 停下来把golang mock这一块的知识库补充完整.

2. mockery介绍

Mockery是一个用于生成Golang接口的Mock的工具. Mockery可以帮助您在测试期间模拟依赖, 以便更轻松地测试代码. Mockery v2是Mocker的最新版本.

阅读更多

在Golang中使用Testify mock框架

1. 前言

我使用golang已经有一段时间了,但直到最近我才终于明白如何在golang测试中进行对象mocking。由于我来自Java,所以在golang中mock对象的方式对我来说并不清楚。这篇文章是我如何达到目前理解的自我记录。在这篇文章中,我使用了来自Testify的mock功能 在阅读这篇这篇文章之前, 读者需要有golang基础。

首先, 我们来创建一个非常简单的服务,如下所示:

GreeterService是一个向用户打招呼的服务。其由两种问候方式:
Greet()根据设置的语言向用户打招呼
GreetDefaultMessage()将使用默认消息向用户打招呼致意,不涉及到语言设置.
在GreeterService内部,Greet()将调用db.FetchMessage(lang),GreetDefaultMessage()将呼叫db.FetchDefaultMessage()。我们可以在真实场景想象的样子,db类是调用真实数据库的类。因此,我们需要在测试中使用mock来避免测试调用实际的数据库。golang中没有class的概念,但我们可以认为struct行为与类是等效的。

阅读更多

如何手动创建一个springBoot项目

1. 介绍

在本文中,您将学习如何创建一个简单的Spring Boot应用程序,以及您需要哪些依赖项和技术需要了解。
此外,我们将更深入地了解基本原理。我将解释一些最关键的工作机制,如果你想成为一名专业开发人员,你需要了解这些机制。

2. 创建一个SpringBoot项目

2.1. 先决条件

要创建新的Spring Boot应用程序,我们需要以下开发环境:

Java 1.8或更高版本

IDE: Spring STS, Intellij Idea或者vscode

包管理工具: Maven 3.2+ 或者gradle 4+

阅读更多

Go database/sql 教程

1. 简介

Go使用SQL与类SQL数据库的惯例是通过标准库database/sql。这是一个对关系型数据库的通用抽象,它提供了标准的、轻量的、面向行的接口。不过database/sql的包文档只讲它做了什么,却对如何使用只字未提。快速指南远比堆砌事实有用,本文讲述了database/sql的使用方法及其注意事项。

阅读更多

在VSCode配置Rust环境

1. 安装Rust

安装Rust可以参考Windows上安装Rust

2. 安装VSCode和扩展

安装VSCode可参考vscode基本配置指南

2.1. 安装Rust analyzer

安装此插件需要安装vscode 1.67及以上版本的vscode.

在VSCode的扩展,搜索 Rust 。找到Rust analyzer点击install。

2.2. 通过VSCode Debug项目

安装CodeLLDB插件

Typescript教程

1. TS简介

1.1. typescript是什么?

以javascript为基础构建的语言
可以在任何支持javascript的平台中执行
一个javascript的超集
typescript扩展了javascript,并添加了类型
TS不能被JS解析器直接执行,需要经过编译成javascript后被JS解析器执行。

阅读更多