Golang中的error类型

Golang中的error类型 error类型本身就是一个预定义好的接口,里面定义了一个method type error interface { Error() string } 生成一个新的error并返回 一般有以下几种处理方式: package main import ( "errors" "fmt" ) type Customerror struct { infoa string infob string Err error } func (cerr Customerror) Erro...阅读全文

阅读:57476 评论:0

在Github中stars数最多的Go日志库集合

在Go语言世界中,日志库并不像Java世界那里有一个具有统治力的日志库。在做新项目技术选型的时候,难免会遇到日志库的选择问题,今天笔者就为大家介绍一下在Github中stars数最多的Go日志库。 logrus是我已知的Go语言日志库中在Github中stars数最多的日志库,功能强大,性能也不错。另外值得一提的是logrus的一个fork库gogap/logrus,可以配置输出到文件和graylog日志系统,基础的level、调用链、行号,文件切分都有,特色是结构化日志可以被统计和索引,借助g...阅读全文

2017-12-19 19:46:19 终于19岁
阅读:15999 评论:0

Golang的反射reflect深入理解和示例

[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和...阅读全文

阅读:70855 评论:12

聊一聊,Golang “相对”路径问题

前言 Golang 中存在各种运行方式,如何正确的引用文件路径成为一个值得商议的问题 以 gin-blog 为例,当我们在项目根目录下,执行 go run main.go 时能够正常运行(go build也是正常的) [$ gin-blog]# go run main.go [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_M...阅读全文

2018-03-13 00:34:39 煎鱼
阅读:21118 评论:0

Golang库集合

golang用于创建和发送电子邮件的库 douceur - HTML 邮件中的内联 CSS email - 一个健壮的、灵活的 email 库 Go-dkim - DKIM 库,用于对 email 进行签名和验证 Go-imap - IMAP 库,用于客户端和服务器 Go-message - 用于触雷互联网消息格式和邮件的库 Gomail - Gomail 是一个非常简单且强大的库,用于发送电子邮件 Hectane - 轻量级 SMTP 客户端,提供 HTTP API hermes - 一个用于...阅读全文

2018.09.14 11:24* 大胡子商人
阅读:15511 评论:0

LoRaWAN中使用到的编程语言

IoT开发环节中,可能用到多种编程语言。以LoRaWAN为例,我们列举一下主流开源项目使用的语言。 设备端 设备端编程主要是MCU编程。主要使用STM32/STM8/MSP430/AVR等MCU。由于ARM mbed/Arduino的参与,大多数低功耗Cortex和第三方MCU架构都可以用于设计设备。 C for STM32, gcc-arm-none-eabi, IAR/Keil C for STM8/MSP430, gcc C++, AVR/STM32, Arduino, gcc C++, ...阅读全文

2018.10.09 13:23 小鱼儿他老汉
阅读:2001 评论:1

golang高性能日志库zap配置示例

golang高性能日志库zap配置示例 zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本。 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func main() { // zap.NewDevelopment 格式化输出 logger, _ := zap.NewDevelopment() defer logger...阅读全文

阅读:32184 评论:2

Go日志框架zap与lumberjack简单配置封装

简介 zap zap是uber开源的Go高性能日志库 https://github.com/uber-go/zap lumberjack Lumberjack用于将日志写入滚动文件。zap 不支持文件归档,如果要支持文件按大小或者时间归档,需要使用lumberjack,lumberjack也是zap官方推荐的。 https://github.com/natefinch/lumberjack 简单使用 工程结构 项目结构.png 核心代码 LogCore /** * 获取日志 * filePath...阅读全文

2019.03.10 00:06 clawhub
阅读:11580 评论:0

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码

4月22日, B站部分后台源代码因为某愤怒的员工, 被上传至Github. 本文我们不讨论安全, 法律 (根据代码漏洞, 去恶意攻击或者获利是违法的! 我们工作时也要注意代码安全), 我仅从开发者的角度谈谈, 这份代码我们能学到什么? B站Golang生态建设, 代码规范, 工具建设, 技术栈选择, 对于Go在部门或公司的推广又有哪些值得借鉴? 首先必须得说, B站这份代码整体还是不错的, 不是说组件或者基础库多么的厉害, 而是从整体目录分布, 业务代码分布, API易用性, 业务代码风格, 工...阅读全文

2019.04.24 22:47* 七月天_5092
阅读:19186 评论:5

[译] 使用 Go 和 ReactJS 构建聊天系统 (二)

本节完整代码:GitHub 本文是使用 ReactJS 和 Go 来构建聊天应用程序的系列文章的第 2 部分。你可以在这里找到第 1 部分 - 初始化设置 现在我们已经建立好了基本的前端和后端,现在需要来完善一些功能了。 在本节中,我们将实现一个基于 WebSocket 的服务器。 在该系列教程结束时,我们将有一个可以与后端双向通信的前端应用程序。 服务 我们可以使用 github.com/gorilla/websocket 包来设置 WebSocket 服务以及处理 WebSocket 连接的...阅读全文

2019年08月02日 咔叽咔叽
阅读:613 评论:0

Goroutine 内存泄漏 - 被遗弃的接收者

## 介绍 Goroutine 内存泄漏是产生 Go 程序内存泄漏的常见原因。在我之前的[文章](https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sender.html)中,我介绍了 Goroutine 内存泄漏,并展示了许多 Go 开发人员容易犯错的例子。继续前面的内容,这篇文章提出了另一个关于 Goroutines 如何出现内存泄露的情景。 ## 泄漏:被遗弃的接收者 ***在此内存...阅读全文

阅读:1575 评论:1