
golang从入门到入门
文章平均质量分 67
怪我冷i
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
golang中接口的常见用法
接口主要关注的是对象的行为,即它们能做什么,而不是它们是什么。这使得我们能够设计出更灵活、更抽象的代码。Go 标准库中的io.Reader和io.Writer接口就是典型的例子。它们定义了读写数据的行为,而不管数据是从哪里来的(文件、网络、内存等)或写到哪里去。// ... 拷贝逻辑 ...Copy函数可以拷贝任何实现了io.Reader和io.Writer接口的流,这大大提高了代码的通用性。Go 语言的接口是其类型系统的重要组成部分,它提供了强大的抽象能力,使得我们能够编写出松耦合高扩展性和易于测试。原创 2025-06-20 00:30:00 · 399 阅读 · 0 评论 -
golang的结构体中放个接口是哪个意思?
特性说明解耦高层模块()不依赖低层模块的具体实现可测试性通过Mock接口避免I/O操作,加速单元测试扩展性新增数据源只需实现接口,无需改动已有代码运行时动态行为同一结构体可支持多种后端实现这种设计是Go中面向接口编程的经典实践,广泛用于Web框架、数据库中间件等需要灵活扩展的场景。原创 2025-06-15 00:30:00 · 349 阅读 · 0 评论 -
golang类型系统
Go语言的类型系统旨在提供一个安全、高效且并发友好的开发环境。它通过强调静态类型、强类型、显式类型转换以及零值初始化来减少运行时错误。同时,通过接口实现多态,避免了传统面向对象继承的复杂性,使得代码更加简洁和可维护。Go的类型系统是其成功和流行的重要基石之一。原创 2025-06-14 00:30:00 · 1053 阅读 · 4 评论 -
Casbin RBAC模型详解
Casbin 是一个强大的、高效的访问控制框架,支持多种权限模型(如 RBAC、ABAC、ACL)。其。原创 2025-05-04 01:28:23 · 392 阅读 · 0 评论 -
Gin框架——登录功能
【代码】Gin框架——登录功能。原创 2025-05-09 00:30:00 · 206 阅读 · 0 评论 -
Podinfo,一个优秀的云原生微服务框架
Podinfo 的核心价值在于其。原创 2025-05-08 00:30:00 · 643 阅读 · 0 评论 -
Go 语言中容易出错的 Channel 编程示例
【代码】Go 语言中容易出错的 Channel 编程示例。原创 2025-05-04 00:30:00 · 385 阅读 · 0 评论 -
golang实现MCP Server核心概念
模型上下文协议(MCP)的Go实现,实现了LLM应用程序与外部数据源和工具之间的无缝集成。原创 2025-04-27 00:30:00 · 526 阅读 · 0 评论 -
golang学习笔记——dial tcp: lookup goproxy.io on修改/etc/resolv.conf
缺点是每次重启系统都要执行一次。原创 2025-04-06 00:30:00 · 238 阅读 · 0 评论 -
Debian 12安装golang
根据您的需求选择最适合的安装方式即可。如需最新功能推荐方法2,如需稳定更新推荐方法3。原创 2025-03-29 00:30:00 · 723 阅读 · 0 评论 -
golang学习笔记——init() 函数是什么时候执行的
init()函数是 Go 程序初始化的一部分。Go 程序初始化先于 main 函数,由 runtime 初始化每个导入的包,初始化顺序不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。每个包首先初始化包作用域的常量和变量(常量优先于变量),然后执行包的init()函数。同一个包,甚至是同一个源文件可以有多个init()函数。init()函数没有入参和返回值,不能被其他函数调用,同一个包内多个init()函数的执行顺序不作保证。原创 2024-11-17 00:30:00 · 366 阅读 · 0 评论 -
golang学习笔记——test测试常用命令
test测试常用命令。转载 2024-10-06 00:30:00 · 746 阅读 · 0 评论 -
使用vscode调试wails项目(golang桌面GUI)
快捷键 Ctrl + Shift + p 打开命令面板,输入go install tools,选择第一项 Go: install/Update Tools。如果没有,它会就缺少的内容提供建议以帮助纠正问题。访问 golang 官网下载环境安装包:https://go.dev/dl/VSCode 的插件功能中输入 go 关键字,然后找到下图中的插件,并安装。VsCode 的安装就更加容易,直接在官网下载软件包按照指引安装即可。最好使用最新版本,因为这是我们通常会测试的版本。vscode调试图片如下。原创 2024-10-03 18:29:22 · 2044 阅读 · 4 评论 -
golang学习笔记——比较两个切片(slice)是否相等
go 语言中可以使用反射判断 a、b 两个切片是否相等,但是通常不推荐这么做,使用反射非常影响性能。通常采用的方式如下,遍历比较切片中的每一个元素(注意处理越界的情况)。原创 2024-09-22 01:00:00 · 466 阅读 · 0 评论 -
golang学习笔记——channel使用场景
在Golang中,Channel是一种非常重要的并发编程原语,它提供了一种安全、高效地在Goroutine之间进行通信的机制。原创 2024-08-31 01:00:00 · 768 阅读 · 0 评论 -
golang学习笔记——Gin、Beego、Iris、Echo框架学习资料
Gin文档-中文Gin文档-英文Beego文档-中文Beego文档-英文应用例子Iris文档-中文Iris文档-英文Echo文档-中文Echo文档-英文Echo中间件原创 2024-08-31 07:45:00 · 504 阅读 · 0 评论 -
golang并发编程—— Select 语句
在 Go 语言中,select语句是一种控制结构,允许一个 Goroutine 同时等待多个通道操作。select语句会阻塞,直到其中的一个case可以继续执行,然后执行该case中的语句。select语句是处理并发任务时非常有用的工具,特别是需要处理多个通道的通信时。原创 2024-08-30 00:30:00 · 537 阅读 · 0 评论 -
golang并发编程——Channel 通道
在Go语言中,(Channel)是一种数据类型,用于在多个 goroutine 之间进行通信和同步。通道提供了一种安全、高效的方式,用于传递数据和控制信息。转载 2024-08-29 01:00:00 · 320 阅读 · 0 评论 -
golang学习笔记——Template模板
执行模板时,函数从两个函数字典中查找:首先是模板函数字典,然后是全局函数字典。一般不在模板内定义函数,而是使用Funcs方法添加函数到模板里。and函数返回它的第一个empty参数或者最后一个参数;就是说 "and x y" 等价于 "if x then y else x";所有参数都会执行;or返回第一个非empty参数或者最后一个参数;亦即 "or x y" 等价于 "if x then x else y";所有参数都会执行;not。原创 2024-08-31 00:30:00 · 2035 阅读 · 0 评论 -
Raft算法——Leader Completeness Property(领导者完整性属性)
Leader Completeness Property指的是,在Raft算法中,如果一个日志条目在某个任期内被提交,那么这个条目一定会出现在所有任期号更大的领导者中。简而言之,新的领导者必须包含所有已提交的日志条目。这一属性确保了系统的状态在不同领导者之间能够保持一致,从而避免了数据不一致和混乱的情况。原创 2024-08-24 15:00:00 · 543 阅读 · 0 评论 -
golang每日一库——casbin开源的访问控制框架
部分用于request的定义,它明确了函数中参数的含义。表示经典三元组: 访问实体 (Subject),访问资源 (Object) 和访问方法 (Action)。但是, 你可以自定义你自己的请求表单, 如果不需要指定特定资源,则可以这样定义sub、act,或者如果有两个访问实体, 则为。这些是我们对policy规则的具体描述policy部分的每一行称之为一个策略规则, 每条策略规则通常以形如pp2的开头。如果存在多个policy定义,那么我们会根据前文提到的与具体的某条定义匹配。TIP。原创 2024-08-23 13:00:00 · 2352 阅读 · 0 评论 -
golang学习笔记——grom连接mysql
Golang的ORM库旨在对开发人员友好。原创 2024-08-25 00:30:00 · 1384 阅读 · 0 评论 -
k8s笔记——资源对象
以下列举的内容都是 Kubernetes 中的对象(Object),这些对象都可以在 YAML 文件中作为一种 API 类型来配置。原创 2024-08-20 10:28:14 · 1126 阅读 · 0 评论 -
Protobuf语法
文件以做为文件后缀,除结构定义外的语句以分号结尾结构定义可以包含:message、service、enumrpc方法定义结尾的分号可有可无Message命名采用驼峰命名方式,字段命名采用小写字母加下划线分隔方式Enums类型名采用驼峰命名方式,字段命名采用大写字母加下划线分隔方式Service与rpc方法名统一采用驼峰式命名字段名称字段名称的命名与C、C++、Java等语言的变量命名方式几乎是相同的protobuf建议字段的命名采用以下划线分割的驼峰式。例如 first_name 而不原创 2024-08-23 01:00:00 · 1660 阅读 · 0 评论 -
golang学习笔记——三色标记法、强三色不变式、弱三色不变式、插入屏障、删除屏障、混合写屏障
Golang的三色标记法是一种高效、并发且适应性强的垃圾回收算法,它通过将对象分为白色、灰色和黑色三种颜色,并追踪对象的引用关系来确定哪些对象是可达的,哪些是不可达的,从而进行垃圾回收。这种算法为Golang提供了方便且高效的内存管理机制,使得程序员可以更加专注于程序的逻辑实现而无需担心内存管理的问题。Golang中的插入屏障、删除屏障和混合写屏障是GC机制中用于保证标记准确性的重要技术。它们各自具有不同的优缺点,但共同的目标是提高GC的效率和准确性。原创 2024-07-25 00:30:00 · 2053 阅读 · 0 评论 -
golang学习笔记——三色标记混合写屏障GC模式全分析
以上便是 Golang 的 GC 全部的标记 - 清除逻辑及场景演示全过程。GoV1.3- 普通标记清除法,整体过程需要启动 STW,效率极低。GoV1.5- 三色标记法, 堆空间启动写屏障,栈空间不启动,全部扫描之后,需要重新扫描一次栈 (需要 STW),效率普通GoV1.8 - 三色标记法,混合写屏障机制, 栈空间不启动,堆空间启动。整个过程几乎不需要 STW,效率较高。转载 2024-07-24 10:48:56 · 284 阅读 · 0 评论 -
k8s笔记——Prometheus 中的Histogram指标
定义:Histogram是一种度量类型,用于表示数据的分布情况。它通过一系列预设的桶(buckets)来收集观察值,并计算每个桶中的观察值数量。目的:主要用于分析和监控数据的分布情况,如响应时间、请求大小等。Prometheus中的Histogram是一种强大的度量类型,用于表示数据的分布情况。通过预设的桶来收集观察值,并计算每个桶中的数量,同时提供总和和总数的附加信息。虽然百分位数的估算可能存在一定误差,但Histogram仍然是分析和监控数据分布的重要工具。原创 2024-07-02 16:00:00 · 938 阅读 · 0 评论 -
k8s笔记——helm chat与k8s Operator区别
Kubernetes 中的自定义资源是对 Kubernetes API 的扩展,它使向 Kubernetes 集群添加默认情况下不可用的功能成为可能。您可以通过创建自定义资源定义(CRD)来实现这一点。如果要使用 Kubernetes Operator 来安装或管理应用程序,您可以创建实现该应用程序所需功能的 CRD。如果您随后将 CRD 与 Operator 的控制器组合,Kubernetes 控制器例程将检测并部署它。有时,使用 Operator 而不是 Helm 并没有明确的优势,反之亦然。原创 2024-06-30 20:30:00 · 1676 阅读 · 0 评论 -
golang学习笔记——类型断言
interface{} 好比 java 中的 Object,java 中的所有类都实现了Object。从测试代码中可以看出,结构体可以断言原本的类型,也可以断言是否继承,实际上这两个分支都是可以进去的。,程序会终止,显然并不能满足一些业务的需求,比如记录错误日志,或走其他分支等等,所以。的参数,就代表了它可以传递任何类型的变量。,再加上**switch **判断类型 不可以使用。多说一句,出于代码可读性角度来讲,编码时可以使用。直接断言使用,返回对应类型的值。,所以如果切换顺序,会匹配到。原创 2024-06-23 01:00:00 · 1871 阅读 · 0 评论 -
golang学习笔记——接口经典面试题 value receivers与pointer receiver
func (s *MyStruct) pointerMethod() { } // 指针方法func (s MyStruct) valueMethod() { } // 值方法对于不熟悉指针的程序员,很难理解这两个例子的区别,实际上这很简单。为类型定义方法时,接收者(上面例子中的 s)实际扮演的是方法的一个参数。判断使用值还是指针定义方法与判断使用值还是指针作为函数参数是相同的问题。有以下几点考虑。首先,最重要的是,这个方法是否需要改变接收者?如果是,接收者必须是指针。原创 2024-06-26 01:00:00 · 1738 阅读 · 0 评论 -
golang学习笔记——结构体嵌套接口
在Go语言中,结构体嵌入接口(embedding an interface in a struct)是一种将接口作为结构体字段的方式。但是,这里的“嵌入”与传统的字段嵌入稍有不同,因为接口本身不包含任何数据,只包含一组方法的签名。当你在结构体中嵌入一个接口时,你实际上是在声明该结构体必须实现该接口的所有方法。这并不是说接口被“嵌入”到结构体中,而是说结构体承诺它将满足该接口的方法集。原创 2024-06-17 00:00:00 · 1004 阅读 · 0 评论 -
k8s笔记——kubernetes中的三种IP
集群控制节点,每个集群需要至少一个master节点负责集群的管控:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等:pod对外服务的统一入口,下面可以维护者同一类的多个pod:标签,用于对pod进行分类,同一类pod会拥有相同的标签。原创 2024-05-31 01:00:00 · 998 阅读 · 0 评论 -
k8s笔记——GVK是什么
在 Kubernetes 中,所有的资源对象都必须要有一个 GVK,以便于 Kubernetes 控制器进行操作和管理。对于一个特定的资源对象,可以通过。在 Kubernetes 中,GVK 是指 Group、Version 和 Kind 三个字段,用于唯一标识 Kubernetes 资源对象。,其中 core 是资源组,v1 是 API 版本,Pod 是资源对象类型。命令来查看它的 GVK 信息。例如,Pod 资源对象的 GVK 是。原创 2024-05-29 12:30:15 · 888 阅读 · 0 评论 -
k8s笔记——kubectl apply run create区别
用于通过文件或标准输入来应用配置,支持更新已存在的资源。:用于快速启动容器化的应用程序,特别适合快速测试或临时部署。:用于从文件、目录或标准输入中创建资源,但不会更新已存在的资源。原创 2024-05-31 00:30:00 · 1435 阅读 · 0 评论 -
k8s笔记——Client-go 4种客户端与Kubernetes API Server 交互
Client-Go 共提供了 4 种与 Kubernetes APIServer 交互的客户端。分别是 RESTClient、DiscoveryClient、ClientSet、DynamicClient。原创 2024-05-29 03:00:00 · 1111 阅读 · 0 评论 -
minikube start 可选项(中文版)
minikube start 可选项原创 2024-05-26 00:00:00 · 917 阅读 · 0 评论 -
debian安装protoc
有多种安装方法。原创 2024-05-28 00:45:00 · 546 阅读 · 0 评论 -
轻量级 K8S 环境 安装minikube
将用户添加到 Docker 组: 若要允许用户在不使用 sudo 的情况下运行 Docker 命令,可以将用户添加到 docker 组。尝试上述步骤后,你应该能够在不遇到 “permission denied” 错误的情况下运行 Docker 命令。请记住,如果将用户添加到 docker 组,可能需要注销并重新登录以使组更改生效。添加用户到 docker 组后,可能需要注销并重新登录以使更改生效。路径为,云服务器——网络与安全——安全组——访问规则。本文采用Debian 12系统。原创 2024-05-22 00:00:00 · 1010 阅读 · 0 评论 -
go项目实战——动手写分布式缓存GeeCache
GeeCache 的缓存全部存储在内存中,内存是有限的,因此不可能无限制地添加数据。假定我们设置缓存能够使用的内存大小为 N,那么在某一个时间点,添加了某一条缓存记录之后,占用内存超过了 N,这个时候就需要从缓存中移除一条或多条数据了。那移除谁呢?我们肯定希望尽可能移除“没用”的数据,那如何判定数据“有用”还是“没用”呢?原创 2024-04-30 01:00:00 · 1975 阅读 · 0 评论 -
golang学习笔记——FAQ 1.22.2
What is the purpose of the project?What is the history of the project?What’s the origin of the gopher mascot?Is the language called Go or Golang?Why did you create a new language?What are Go’s ancestors?What are the guiding principles in the design?Is Goog原创 2024-04-27 00:00:00 · 847 阅读 · 0 评论