随笔分类 - Go
摘要:目录类型断言的基本用法处理多种可能的类型获取接口的实际类型总结 在Go语言中,如果你想从接口类型的值中提取实际类型,可以使用类型断言(type assertion)。类型断言允许你检查接口变量的实际类型并将其转换为该类型。 类型断言的基本用法 假设你有一个接口类型的变量 i,你可以使用类型断言来检查
阅读全文
摘要:目录%v%+v%#v 在 Go 语言中,fmt 包提供了格式化字符串的功能,类似于 C 语言的 printf 函数。fmt 包中的 %v、%+v 和 %#v 是用于格式化输出的占位符,它们各自有不同的用途。 %v 含义:%v 表示以默认格式(值)输出变量。对于基本类型如整数、浮点数等,它会直接输出其
阅读全文
摘要:目录接口转结构体结构体转接口使用ok-idiom进行安全的类型断言 在Golang中,接口和结构体之间的转换涉及到类型断言和类型断言的操作符。 接口转结构体 如果我们有一个接口变量,并且我们知道它的内部具体类型,我们可以使用类型断言来将其转换为该具体类型的结构体。 package main impo
阅读全文
摘要:虽然我们可以在Go源码文件中直接定义C类型、变量和C函数,但从代码结构上来讲,在Go源文件中大量编写C代码并不是Go推荐的惯用法。那么如何将C函数和变量定义从Go源码中分离出去单独定义呢?我们很容易想到将C的代码以共享库的形式提供给Go源码。 Go提供了#cgo指示符,可以用它指定Go源码在编译后与
阅读全文
摘要:目录Go目录/cmd/internal/pkg/vendor服务应用程序目录/apiWeb 应用程序目录/web通用应用目录/configs/init/scripts/build/deployments/test其他目录/docs/tools/examples/third_party/githook
阅读全文
摘要:https://learnku.com/docs/go-patterns/1.0.0
阅读全文
摘要:在 Go 语言中,...interface{} 是用来定义可变参数(variadic parameters)的一种方式。这种类型的参数可以接受任意数量的任何类型的值。当你在一个函数声明中看到 ...interface{},这意味着该函数可以接收零个或多个参数,这些参数可以是任何数据类型。 例如,下面
阅读全文
摘要:在Go语言中,接口(interface)是一种类型,它定义了一组方法,但不包括这些方法的具体实现。任何类型,只要它实现了接口所有声明的方法,则它就实现了该接口。 接收器(receiver)是Go中的一个概念,它指的是在方法(method)的定义中,在关键字func和方法名之间的参数。这个参数定义了方
阅读全文
摘要:Go拥有命令式语言的静态类型,编译很快,执行也很快,同时加入了对于目前多核CPU的并发计算支持,也有相应的特性来实现大规模编程。 // 单行注释 /* 多行 注释 */ // 导入包的子句在每个源文件的开头。 // main比较特殊,它用来声明可执行文件,而不是一个库。 package main /
阅读全文
摘要:Go语言的flag包用于命令行参数的解析。你可以通过定义参数来使用它。 以下是一些使用flag包的常见方法: 使用flag.String()定义一个字符串参数。 使用flag.Int()定义一个整数参数。 使用flag.Parse()解析命令行参数。 使用flag.Args()获取未解析的参数。 以
阅读全文
摘要:目录shm_openserverclientshmgetclientserver shm_open server C++ 可以使用 POSIX 共享内存 API 来创建和管理共享内存 server.cpp #include <fcntl.h> #include <sys/mman.h> #inclu
阅读全文
摘要:目录ORM框架GORM基本用法1. 安装GORM2. 连接数据库3. 定义模型4. 执行CRUD操作5. 迁移和查询 ORM框架 在Golang中,ORM(Object-Relational Mapping,对象关系映射)框架是一种用于将面向对象的概念与关系型数据库中的表进行映射的工具。通过使用OR
阅读全文
摘要:在Go语言中,strings.Join 函数用于将一个字符串切片([]string)连接成一个单独的字符串,并且可以在它们之间插入一个指定的分隔符。这个函数是 strings 包中的一部分,因此在使用之前需要先导入这个包。 以下是 strings.Join 函数的基本用法: package main
阅读全文
摘要:sync.WaitGroup 是 Go 语言标准库中提供的一个同步原语,用于在并发环境中协调多个 Goroutine 的执行顺序,确保所有并发任务完成后再继续执行后续逻辑。以下是 sync.WaitGroup 的使用方法: 创建 WaitGroup: 使用 sync.WaitGroup 类型的零值创
阅读全文
摘要:目录 os.File 是 Go 语言标准库中代表操作系统文件的接口,提供了诸如打开、读取、写入、关闭等文件操作。当需要与文件进行交互时,通常会使用 os.File 类型的实例。 bufio.Writer 是缓冲 I/O 包(bufio)中的一个结构体,它为写入操作提供了一个带缓冲的接口。bufio.
阅读全文
摘要:目录1. 安装JDK、Zookeeper、Scala、kafka2. 启动kafka3. 创建topics4. 查看topics5. 打开一个producer6. 打开一个consumer7. 测试发送和接收消息 Windows下安装Kafka 1. 安装JDK、Zookeeper、Scala、ka
阅读全文
摘要:目录Sarama简介基本步骤示例代码 Sarama简介 Sarama是一个用Go语言编写的Apache Kafka客户端库,由Shopify公司最初开发,并在后来被IBM接管维护。Sarama库提供了一套完整的Kafka功能支持,包括生产者(Producer)、消费者(Consumer)以及消费者组
阅读全文
摘要:目录存储配置文件watch命令 在Go语言中,etcd是一个高可用的键值存储系统,它主要用于共享配置和服务发现。etcd由CoreOS团队开发,它是Kubernetes项目中用于存储所有集群数据的关键组件。etcd使用Raft协议来保持集群之间的数据一致性,并且提供了强一致性保证 https://b
阅读全文
摘要:目录简介示例 简介 在Go语言中,tail是一个用于监控文件的库,它允许你跟踪文件的末尾几行内容,特别是当文件持续增长时。tail库通常用于日志文件监控,可以实时读取日志文件的新增内容。以下是tail库的一些常见用法: 创建 Tail 对象:使用tail.Tail函数创建一个Tail对象,它需要传入
阅读全文