0x01 遍历取不到所有元素指针? 如下代码想从数组遍历获取一个指针元素切片集合 arr := [2]int{1, 2} res := []*int{} for _, v := range arr { res = append(res, &v) } //expect: 1 2 f
1. 引言 在Go语言中,数组和切片都是常见的数据结构,它们经常被用于存储数据,可以相互替换。本文将介绍Go语言中数组和切片的基本概念,同时详细探讨切片的优势。从而能够充分的理解切片相对于数组的优点,更好得对切片进行使用。 2. 基本介绍 2.1 数组 数组是一种固定长度、具有相同类型的元素序列。
数据结构 in Golang:Hash Tables(哈希表) 场景 水果店的价格表: 苹果 Apple:3元 香蕉 Banana:4元 桃子 Peach:2元 梨 Pear:3元 找到一种水果的价格: 可以使用 binary search,通过名称来查找,耗时:O(logn) 如何只耗时 O(
文中所涉及到的代码运行结果均是在64位机器上执行得到的. 基础知识回顾 在Go中,我们可以使用unsafe.Sizeof(x)来查看变量所占的内存大小。以下是Go内置的数据类型占用的内存大小: 类型 内存大小(字节数) bool 1 int8/uint8 1 int/uint 8 int32/
前言 本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助。 1. hello world 新手村的第一课,毋庸置疑。 package main import "fmt" func main() { fmt
算法 in Golang:Recursion(递归) 递归算法 场景:在套娃中找到宝石 可以这样做 while 没找到: if 当前项 is 宝石: return 宝石 else if 当前项 is 套娃: 打开这个套娃 if 当前项 is 宝石: return 宝石 else if 当前项
算法 in Golang:Quicksort(快速排序) Quicksort(快速排序) 快速排序 O(nlog2^n),比选择排序要快 O(n²) 在日常生活中经常使用 使用了 D & C 策略(分而治之) 使用 Quicksort 排序数组 不需要排序的数组(也就是 Base Case
算法 in Go:Binary Search(二分查找) Binary Search(二分查找) Binary Search(二分查找) 猜数 1、2、3、4、5、6、7、8 排好序一个集合,先从中间开始猜,根据提示就可以排除一半,在剩余的一半里,再从中间开始猜,依此类推,这就是二分查找。 Bin
1. 引言 在系统中,上游服务和下游服务是两个关键概念。上游服务通常指的是提供某种功能或数据的服务端,它接收来自下游服务的请求,并根据请求进行处理和响应。下游服务通常指的是发起请求并依赖上游服务的客户端,它们通过发送请求向上游服务请求数据或执行某些操作。 上游服务和下游服务之间的协作是系统中实现整
1. 引言 在 Go 语言中,map是一种内置的数据类型,它提供了一种高效的方式来存储和检索数据。map是一种无序的键值对集合,其中每个键与一个值相关联。使用 map 数据结构可以快速地根据键找到对应的值,而无需遍历整个集合。 在 Go 语言中,map 是一种内置的数据类型,可以通过以下方式声明和
TDengine Go 连接器 https://github.com/taosdata/driver-go 使用 cgo 调用 taos.so 中的 API,使用过程中发现线程数不断增长,本文从一个 cgo 调用开始解析 Go 源码,分析造成线程增长的原因。 转换 cgo 代码 对 driver-
1. 引言 在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 数据结构操作:在使用map等数据结构时,可能需要判断两个对象是否相等以进行元素查找、删除或更新等
原文链接: 为什么说 Go 语言字符串是不可变的? 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。 首先来看看它的底层结构: type stringSt
本次主要介绍golang中的标准库bytes,基本上参考了 字节 | bytes 、Golang标准库——bytes 文章。 bytes库主要包含 5 大部分,即: 常量 变量 函数 Buffer Reader 我们依次学习上面的 5 大部分。 1、常量 const MinRead = 512
2023-05-31 要检查切片是否为空,需始终使用 len(s) == 0 来判断,而不应该使用 s == nil 来判断。 切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个nil值的切片并没有底层数组,一个
多线程程序在一个核的CPU运行 多线程程序在多个核的CPU运行 goroutine 协程:用户态,轻量级线程,栈KB级别,创建和调度由go语言直接调度 线程:内核态,线程跑多个协程,栈MB级别 package main import ( "fmt" "time" ) fun
1. 简介 本文将介绍 Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法、实现原理、使用注意事项等内容。能够更好地理解和应用 Weighted 来实现资源的管理,从而提高程序的稳定性。 2. 问题引入 在微服务架构中,我们的服务节点负责接收其他节点的请求,并提供相
前言:在 Golang 中函数之间传递变量时总是以值的方式传递的,无论是 int,string,bool,array 这样的内置类型(或者说原始的类型),还是 slice,channel,map 这样的引用类型,在函数间传递变量时,都是以值的方式传递,也就是说传递的都是值的副本。 在使用iouti

推荐文章