随笔分类 -  Golang

摘要:1、自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct或者函数类型来定义。 //将KubeInt定义为int类型 ty 阅读全文
posted @ 2022-01-24 15:33 人艰不拆_zmc 阅读(1002) 评论(0) 推荐(0) 编辑
摘要:1、概述 Mutex 是一个互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex 类型的锁和线程无关,可以由不同的线程加锁和解锁。 type Mutex struct { state int32 sema uint32 } 2、方法 Lock func (m *Mutex) Lock() 阅读全文
posted @ 2022-01-19 13:11 人艰不拆_zmc 阅读(359) 评论(0) 推荐(0) 编辑
摘要:1、概述 1.1 基本概念 原子性:一个或多个操作在CPU的执行过程中不被中断的特性,称为原子性。这些操作对外表现成一个不可分割的整体,他们要么都执行,要么都不执行,外界不会看到他们只执行到一半的状态。 原子操作:进行过程中不能被中断的操作,原子操作由底层硬件支持,而锁则是由操作系统提供的API实现 阅读全文
posted @ 2022-01-18 20:27 人艰不拆_zmc 阅读(775) 评论(0) 推荐(0) 编辑
摘要:1、概述 在 Go 里有很多种定时器的使用方法,像常规的 Timer、Ticker 对象,以及经常会看到的 time.After(d Duration) 和 time.Sleep(d Duration) 方法。以上这些定时器的使用方法都来自Golang 原生 time 包,使用time包可以用来执行 阅读全文
posted @ 2022-01-18 13:21 人艰不拆_zmc 阅读(6938) 评论(0) 推荐(1) 编辑
摘要:1、问题引入 oklog/run 包提供了一套非常简单、易用的 Go routine 编排框架。在介绍 oklog/run 前,我们先考虑以下问题: 假设我们有四个 Go routine 组件,如图所示,分别是运行一个状态机 sm.Run 、启动一个 HTTP 服务器、执行定时任务 cronJobs 阅读全文
posted @ 2022-01-17 13:09 人艰不拆_zmc 阅读(804) 评论(0) 推荐(0) 编辑
摘要:1、概述 在golang中有很多方法来处理命令行参数,简单情况下可以不使用任何库,直接使用os.Args;但是golang标准库提供了flag包来处理命令行参数;还有第三方提供的处理命令行参数的库cobra、cli等。 2、os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样 阅读全文
posted @ 2022-01-16 23:10 人艰不拆_zmc 阅读(1329) 评论(0) 推荐(0) 编辑
摘要:1、概述 sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,它们只被用于sort包内部使用。所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了sort.Interface定义的三个方法:获取数据集合长度的Len()方法、比较两个元素 阅读全文
posted @ 2022-01-16 22:01 人艰不拆_zmc 阅读(449) 评论(0) 推荐(0) 编辑
摘要:1、Golang 获取系统环境变量 Golang 要获取系统的环境变量需要导入"os"包,通过os包中的Getenv方法来获取。 func Getenv(key string) string { } 示例代码: package main import ( "fmt" "os" ) func main 阅读全文
posted @ 2022-01-15 21:55 人艰不拆_zmc 阅读(9641) 评论(0) 推荐(0) 编辑
摘要:1、概述 经常在开源库中看到rune关键字,从golang源码中看出,它是int32的别名(-231~231-1),对比byte(-128~127),可表示的字符更多。 2、使用 由于rune可表示的范围更大,所以能处理一切字符,当然也包括中文字符。在平时计算中文字符,可用rune。 查询官方的解释 阅读全文
posted @ 2022-01-14 10:14 人艰不拆_zmc 阅读(1955) 评论(0) 推荐(0) 编辑
摘要:GO语言heap剖析 本节内容 heap使用 heap提供的方法 heap源码剖析 利用heap实现优先级队列 1. heap使用 在go语言的标准库container中,实现了三种数据类型:heap,list,ring,list在前面一篇文章中已经写了,现在要写的是heap(堆)的源码剖析。 首先 阅读全文
posted @ 2021-11-03 08:57 人艰不拆_zmc 阅读(1270) 评论(0) 推荐(0) 编辑
摘要:如果您还在使用vendor机制管理依赖包,那么说明您肯定是处于下面两种情况之一! 还工作在传统的GOPATH模式下(使用Go 1.10及之前版本;或Go 1.11及之后版本,但GO111MODULE=off),利用vendor管理目标包的特定依赖; 工作在go module模式下,但仍然利用vend 阅读全文
posted @ 2021-10-12 10:50 人艰不拆_zmc 阅读(756) 评论(0) 推荐(0) 编辑
摘要:背景 哈喽,大家好,我是asong。前几天在一个交流群里看到了一道非常有意思的面试题,今天把它分享出来,我们先来看一下这个道题: fmt.Println(nil== nil) 两个nil的比较结果是什么? true、false、还是无法编译?大家先思考着,文中揭晓答案。 Go中nil的定义 在Go官 阅读全文
posted @ 2021-09-27 11:15 人艰不拆_zmc 阅读(341) 评论(0) 推荐(0) 编辑
摘要:Mac系统: Mac下编译Linux, Windows平台的64位可执行程序: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build gofile.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build gofi 阅读全文
posted @ 2021-09-08 14:46 人艰不拆_zmc 阅读(1123) 评论(0) 推荐(0) 编辑
摘要:Go命令是管理Go资源的工具,安装好Go环境后会内置很多有用的命令工具。 初步的了解一下这些命令的用途,对写代码很有帮助 有一些命令是非常常用的,比如 run、build、get、test、get,有一些命令在使用IDE后很少会用到,IDE代劳了。 常规用法: `go <命令> [参数]` 命令: 阅读全文
posted @ 2021-09-07 20:34 人艰不拆_zmc 阅读(380) 评论(0) 推荐(0) 编辑
摘要:介绍: 对于array、slice、map、struct等类型,想要比较两个值是否相等,不能使用==,处理起来十分麻烦,在对效率没有太大要求的情况下,reflect包中的DeepEqual函数完美的解决了比较问题。 函数签名: func DeepEqual(a1, a2 interface{}) b 阅读全文
posted @ 2021-09-03 11:49 人艰不拆_zmc 阅读(1821) 评论(0) 推荐(0) 编辑
摘要:1.声明为map[string]struct{} 由于struct{}是空,不关心内容,这样map便改造为set map可以通过“comma ok”机制来获取该key是否存在,例如_, ok := map["key"],如果没有对应的值,ok为false 可以通过定义成map[string]stru 阅读全文
posted @ 2021-08-30 15:20 人艰不拆_zmc 阅读(537) 评论(0) 推荐(0) 编辑
摘要:Go 语言中延迟函数 defer 充当着 try...catch 的重任,使用起来也非常简便,然而在实际应用中,很多 gopher 并没有真正搞明白 defer、return、返回值、panic 之间的执行顺序,从而掉进坑中,今天我们就来揭开它的神秘面纱! 先来运行下面两段代码: A. 匿名返回值的 阅读全文
posted @ 2021-08-30 14:56 人艰不拆_zmc 阅读(686) 评论(0) 推荐(0) 编辑
摘要:1、通过range遍历channel内容 package main import ( "fmt" ) func main() { ch := make(chan int) //创建一个无缓存channel //新建一个goroutine go func() { for i := 0; i < 5; 阅读全文
posted @ 2021-08-30 14:46 人艰不拆_zmc 阅读(659) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示