首页
最新

解决报错using unaddressable value in

这通常是gorm没有正确使用产生的报错,比如: 正确的写法是 db.Create(&user) 我们写成了 db.Create(user) 只需要传入正确的值即可解决该问题。
发布于 2024-1-25 下午3:8 阅读数 298

go install 将命令安装到哪了

当你运行go install命令时,它会将编译后的可执行文件或者库文件安装到$GOBIN目录或者$GOPATH/bin目录。具体安装到哪个目录取决于你的环境变量设置。 如果你设置了$GOBIN环境变量,那么go install将会将编译后的可执行文件或者库文件安装到$GOBIN目录。 如果你没有设置$GOBIN环境变量,但设置了$GOPATH环境变量,那么go install将
发布于 2023-7-26 下午3:4 阅读数 3633

go map数据结构和源码详解

1. 前言 本文以go1.12.5版本分析,map相关的源码在runtime包的map开头的几个文件中,主要为map.go。 go的map底层实现方式是hash表(C++的map是红黑树实现,而C++ 11新增的unordered_map则与go的map类似,都是hash实现)。go map的数据被置入一个由桶组成的有序数组中,每个桶最多可以存放8个key/value对。key的hash值(32位)的低阶位用
发布于 2023-6-29 下午2:37 阅读数 10261

Golang高效编写单元测试的技巧

在项目中进行单元测试是一种重要的开发实践。然而,当被测代码依赖其他模块或组件时,编写单元测试变得复杂且不稳定。本文将介绍如何使用mock来编写简洁高效的单元测试。 引言 首先我们先来看下项目中的依赖注入文件cmd/server/wire.go: tip: 该文件由google/wire工具自动编译生成,禁止人为编辑 // Injectors from wire.go: func
发布于 2023-6-26 上午11:48 阅读数 9258

如何配置GOBIN环境变量

如何配置GOBIN环境变量 在开发过程中,我们经常需要在命令行中执行Go程序。为了方便起见,我们可以配置GOBIN环境变量,使得我们可以直接在命令行中执行Go程序,而不需要指定完整的路径。 下面,我将为你介绍在不同操作系统上如何配置GOBIN环境变量,并使其永久生效。 Windows系统 打开控制面板,点击"系统和安全",然后点击"系统"。 在
发布于 2023-6-21 下午2:27 阅读数 3363

golang internal目录

golang internal目录 在Go语言中,有一个特殊的目录叫做internal目录,它在项目中扮演着一个重要的角色。本文将介绍internal目录的作用和使用方法,并提供一些实际的示例来帮助你更好地理解。 什么是internal目录? internal目录是Go语言的一种约定,用于限制包的可见性。在Go语言中,包是代码组织和复用的基本单元,而internal目录可
发布于 2023-6-21 下午2:11 阅读数 3331

swaggo 和 go-swagger 的区别

介绍 在介绍 swaggo 和 go-swagger 的区别之前,先来了解一下它们分别是什么。 swaggo 是一个用于生成和维护 Go 语言项目中 API 文档的工具。它基于注释和代码自动生成 Swagger 规范的文档,使得开发者可以方便地生成和更新 API 文档。 go-swagger 是一个基于 Swagger 规范的 Go 语言实现。它提供了一套完整的工具链,用于生成、验
发布于 2023-6-14 下午10:32 阅读数 3960

Nunu: 助你快速构建高效可靠的Go应用

Nunu 是一个基于 Golang 的应用脚手架,它的名字来自于英雄联盟中的游戏角色,一个骑在雪怪肩膀上的小男孩。和努努一样,该项目也是站在巨人的肩膀上,它是由 Golang 生态中各种非常流行的库整合而成的,它们的组合可以帮助你快速构建一个高效、可靠的应用程序。 项目主页:https://github.com/go-nunu/nunu 功能 Nunu 采用了多种流
发布于 2023-6-7 上午9:23 阅读数 1938

Go 1.16 新特性:embed

前言 随着Go语言的不断发展,越来越多的开发者开始使用Go语言进行开发。在Go语言中,我们经常需要使用到文件资源,例如静态文件、配置文件等等。在过去,我们可能需要使用第三方库或者手动读取文件来获取这些资源。但是自Go1.16版本开始,Go语言内置了一个新的特性——embed,它可以方便地将文件资源嵌入到Go二进制文件中,从而方便我们
发布于 2023-6-4 下午1:4 阅读数 1885

Wire 用户指南

基础知识 Wire 有两个核心概念:提供者和注入器。 定义提供者 Wire 的主要机制是提供者:可以生成值的函数。这些函数是普通的 Go 代码。 package foobarbaz type Foo struct { X int } // ProvideFoo 返回一个 Foo。 func ProvideFoo() Foo { return Foo{X: 42} } 提供者函数必须导出才能从其他包中使用,就像普通函数一样。 提供者
发布于 2023-6-3 下午3:16 阅读数 1406

Golang 测试TDD、ATDD、BDD最佳实践

在软件开发中,测试是非常重要的一环。单元测试是其中的一种测试方式,它可以帮助我们验证代码的正确性,确保代码的质量。本文将介绍 Golang 单元测试的概念和最佳实践。 Golang 单元测试概述 Golang 是一门非常适合编写高效、可靠和可维护的软件的语言。Golang 内置了一个轻量级的测试框架,可以帮助我们编写单元测试。 在 Golang 中
发布于 2023-5-28 下午2:13 阅读数 2208

sync.Cond 类型的使用方法和注意事项

前言 在并发编程中,条件变量是一种常用的线程间协作机制,它可以让一个或多个线程等待某个条件的满足,从而实现线程间的同步和通信。在 Go 语言中,sync 包提供了 Cond 类型来支持条件变量的使用。本文将深入探讨 sync.Cond 的使用方法和注意事项,帮助你更好地理解 Go 语言中的并发编程。 Cond 类型 Cond 类型是 Go 语言中的条件
发布于 2023-5-25 上午10:35 阅读数 467

正确处理Go语言中的错误

错误处理是任何软件开发过程中的重要方面,Go 提供了几种不同的方法来处理代码中的错误。 在 Go 中,错误由 error 接口表示,其定义如下: type error interface { Error() string } Error() 方法返回描述错误的字符串。要创建一个错误,可以使用 errors.New() 函数,该函数将字符串作为参数,并返回一个 error 值。 例如,考虑一个将
发布于 2023-5-24 下午10:17 阅读数 510

使用 VS Code 调试 Docker 化的 Go 应用程序

封面图片由作者提供 对于开发人员而言,调试是软件开发中至关重要且具有挑战性的方面。这就像是一名侦探,寻找线索并拼凑出代码出错的故事。但是,就像任何侦探故事一样,这也是一项挑战。在容器化环境(如 Docker)中进行调试会增加一层复杂性。然而,通过正确的工具和方法,使用 Visual Studio Code 在 Docker 容器中调试 Go 应用程
发布于 2023-5-24 下午9:36 阅读数 1355

Go 泛型Repository

作者提供的图片 | 使用 Go 的吉祥物 简介 Go 泛型是一项期待已久的功能,从 Go 1.18 开始可用。本文将展示如何使用它们创建一个通用存储库,用于存储各种类型的数据。下面是我们将要做的事情的概述: 通过测试定义我们希望消耗存储库行为的方式 定义一个通用的存储库接口 创建一个通用的存储库接口实现 为其中一个模型创建一个
发布于 2023-5-24 下午6:51 阅读数 634

学以致用:“Golang指针非常强大”

指针是 Go 中的一个基本概念,它允许你传递程序中的值和记录的引用。它是这门语言的一个关键特性,可以用于提高代码性能并实现更强大的抽象。 在 Go 中,指针是存储另一个变量内存地址的变量。你可以使用 & 运算符来创建指针,以获取变量的地址。例如: package mainimport "fmt"func main() { x := 10 var p *int = &x fmt.
发布于 2023-5-24 下午6:46 阅读数 386

使用真实世界的案例解释 Go 中的 SOLID 原则

SOLID 是一个缩写,代表了一组五个设计原则,旨在使软件更易于理解、灵活和可维护。这些原则由 Robert C. Martin 提出,广泛应用于面向对象编程。虽然 Go 不是纯粹的面向对象,但它与面向对象有许多相似之处,因此 SOLID 原则仍然可以有效地应用。在本文中,我们将使用实际用例探讨 Go 中的 SOLID 原则,而不是使用典型的学术示例,如
发布于 2023-5-24 下午5:34 阅读数 547

深入了解 Golang 测试技巧

Go 测试 照片来自 Antoine Dautry 在 Unsplash 上 测试是软件开发的重要部分,而在 Go 中编写测试很简单: 创建一个带有后缀 *_test.go 的文件 定义一个函数,签名为 TestXxx(t *testing.T) 使用 go test 命令运行它(或在 IDE 上直接点击按钮)。 但你是否曾考虑过你可以做更多呢?在本文中,我们将探讨更多的 Go 测试技巧,超越基
发布于 2023-5-24 下午5:33 阅读数 402

Golang泛型与接口:最佳实践

简介 自从Go 1.18版本开始,Go开始支持泛型。然而,本文并不是关于什么是泛型(已经有很多文章了),而是关于何时使用它们的问题。显而易见的TLDR是:当你需要为多个类型编写相同的逻辑时,使用泛型。这听起来很容易理解,但当我们面对实际情况时,我们还有另一个选择:使用接口。那么问题来了:何时使用泛型而不是接口?我们将在本文中使用
发布于 2023-5-24 下午5:0 阅读数 618

2023年,Go和Rust正逐渐占据Java和Python的地盘。

最近,O’Reilly发布了2023年技术趋势报告,研究表明开发人员对生成式人工智能的关键组件的兴趣正在加速:自然语言处理(NLP)相关内容的阅读量同比增长了42%,其次是深度学习(23%)。 开发人员还越来越多地搜索与transformers相关的内容,这些AI模型已经在自然语言处理方面取得了巨大的进展。O’Reilly认为这一趋势反映了Open AI的GPT-
发布于 2023-5-24 下午4:44 阅读数 496

在Golang中使用JWT——如何实现基于令牌的身份验证

设计者:canopas 我们在应用程序中使用两种类型的令牌进行身份验证: 访问令牌(Access Token):用于在客户端上访问受保护的资源的字符串。每个令牌都具有特定的范围、生命周期和其他有效属性。我们可以根据需要设置生命周期(1小时或1天)。 刷新令牌(Refresh Token):用于获取访问令牌的字符串。在授权时,它将在颁发访问令牌时创建。
发布于 2023-5-24 下午3:36 阅读数 664

防止 Golang 中的数据库连接泄漏:从十亿美元的错误中吸取教训

这篇文章主要讲解我们为什么需要一个独立的事务层?如何将其抽象出来,并使用单元测试和集成测试进行测试。 在我之前的博客中,《十亿美元的 Go 错误》,我讨论了 Golang 中常见但是天真的错误,可能会导致连接泄漏。虽然我提供了几种解决此问题的方法,但仍有一个问题困扰着我和我的读者。我们可以通过将事务机制抽象到不同的层中来
发布于 2023-5-24 下午3:17 阅读数 343

Go 语言中泛型的综合指南

Go 是一种静态类型语言。这意味着变量和参数的类型在编译时进行检查。内置的 Go 类型,如映射、切片、通道,以及内置的 Go 函数,如 len 和 make,能够接受和返回 不同类型的值,但在 1.18 版本之前,用户定义的类型和函数不能。 这意味着在 Go 中,例如我为 int 创建了一个二叉树: type IntTree struct { left, right *IntTree value
发布于 2023-5-24 中午12:22 阅读数 342

快速指南:Go 1.20 新特性

Go 1.19发布已经将近6个月了,社区已经发布了Go 1.20的rc3版本。如果你想知道早期版本有哪些功能,可以查看快速指南:Go 1.19功能。 Go 1.20将于2023年2月发布。你可以查看发布状态。现在让我们看看Go 1.20有哪些新功能。 目录 多个错误的包装 跳过模式 带取消的上下文 不安全包 可比较接口 基于性能剖析的优化 不包含 内存区域 多
发布于 2023-5-24 上午12:31 阅读数 587

深入了解Go实践中的分布式数据库设计

设计分布式数据库是一个复杂的任务,需要仔细考虑各种因素,例如性能、可伸缩性、可靠性和数据一致性。以下是设计分布式数据库的一些步骤: 1. 确定数据需求: 首先,确定需要存储的数据类型和预期数据量。这将帮助你确定适合使用的数据库技术。 例如: package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql
发布于 2023-5-24 上午12:0 阅读数 371

Golang

文章: 192关注: 8点击: 22490
推荐作者
暂无描述
北漂一族
名士风流,国士无双
大概是个无趣的人。
暂无描述