随笔分类 -  go

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
摘要:问题 type Part1 struct { a bool b int32 c int8 d int64 e byte } 在开始之前,希望你计算一下 Part1 共占用的大小是多少呢? func main() { fmt.Printf("bool size: %d\n", unsafe.Sizeo 阅读全文
posted @ 2021-03-06 23:49 牛奔 阅读(79) 评论(0) 推荐(0)
摘要:为什么要控制goroutine的数量? 在我们开发过程中,如果不对goroutine加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。 用什么方法控制goroutine的数量? 尝试 chan func main() { userCo 阅读全文
posted @ 2021-03-03 15:58 牛奔 阅读(403) 评论(0) 推荐(0)
摘要:3月3日写 阅读全文
posted @ 2021-03-02 23:28 牛奔 阅读(98) 评论(0) 推荐(0)
摘要:embed 是什么 embed是在Go 1.16中新加入的包。它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。 为什么需要 embed 包 在以前,很多从其他语言转过来Go语言的同学会问到,或者踩到一个坑。就是以为Go语言所打包的二进制文件 阅读全文
posted @ 2021-03-01 20:58 牛奔 阅读(3366) 评论(1) 推荐(2)
摘要:前言 数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。 Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 如果map由多协程同时读和写就会出现 fatal error:concurrent map r 阅读全文
posted @ 2021-02-24 11:17 牛奔 阅读(14639) 评论(0) 推荐(1)
摘要:package main import "fmt" type good struct { id int64 sum int64 } func main() { good1 := good{1, 3} good2 := good{1, 3} good := []good{} good = append 阅读全文
posted @ 2021-02-23 18:25 牛奔 阅读(629) 评论(0) 推荐(0)
摘要:package main import "fmt" func main() { p1 :=new(int) *p1 =1 fmt.Println("p1",p1) fmt.Println("*p1",*p1) fmt.Println("&p1",&p1) s1 := new([]int) s2 := 阅读全文
posted @ 2021-02-22 11:05 牛奔 阅读(151) 评论(0) 推荐(0)
摘要:简介 Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。 目前 Go 语言支持 Window 阅读全文
posted @ 2021-02-21 22:34 牛奔 阅读(1804) 评论(0) 推荐(0)
摘要:WaitGroup 是什么以及它能为我们解决什么问题? WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组、团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。 正常情况下,goroutine的结束过程是不可控制的,我们 阅读全文
posted @ 2021-02-19 11:18 牛奔 阅读(6725) 评论(0) 推荐(0)
摘要:延时调用 AfterFunc go function() func function() { // TODO 具体逻辑 // 每5分钟执行一次,递归调用自己 time.AfterFunc(5*time.Minute, function) } 打点器 Tickers package main impo 阅读全文
posted @ 2021-02-03 18:26 牛奔 阅读(1220) 评论(0) 推荐(0)
摘要:切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时,切片还具有可索引,可迭代的 阅读全文
posted @ 2021-02-03 18:13 牛奔 阅读(180) 评论(0) 推荐(0)
摘要:简介 地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库 灵活的数据源 不光光可以从文件读取配置,还支持 []byte 类型的纯数据读取和基于 io.ReadCloser 的流式读取。 多种格式兼容 各种文件种类的广泛支持,包括但不限于 my.cnf、.gitconfig 甚至不可 阅读全文
posted @ 2021-01-27 14:36 牛奔 阅读(1241) 评论(0) 推荐(0)
摘要:合并两个整型切片,返回没有重复元素的切片,有两种去重策略 1. 通过双重循环来过滤重复元素(时间换空间) // 通过两重循环过滤重复元素 func RemoveRepByLoop(slc []int) []int { result := []int{} // 存放结果 for i := range 阅读全文
posted @ 2021-01-23 10:44 牛奔 阅读(5537) 评论(0) 推荐(0)
摘要:直接部署: 1、将程序所需要的文件如配置文件和生成的可执行文件拷贝到linux中 2、直接执行./main命令,启动程序 (main是go编译生成的可执行文件) 如果报Permission denied错误,将可执行文件赋予可执行权限 chmod -R 755 main 在后台启动程序 ./main 阅读全文
posted @ 2021-01-19 17:32 牛奔 阅读(3750) 评论(0) 推荐(0)
摘要:前言 在进行Go开发的时候,go env 可以设置Go的环境变量信息 GOOS 的默认值是我们当前的操作系统, 如果 windows,linux,注意 mac os 操作的上的值是darwin。 GOARCH 则表示 CPU 架构,如 386,amd64,arm 等。 CMD命令行中 在CMD命令行 阅读全文
posted @ 2021-01-19 16:08 牛奔 阅读(5623) 评论(0) 推荐(0)
摘要:在开发中,将时间转换成json时,默认是把时间转换为 RFC3339 格式 2018-01-14T21:45:54+08:00 这个貌似是GO的诞生的时间 先来看看time包中对格式的常量定义 const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = 阅读全文
posted @ 2021-01-19 15:58 牛奔 阅读(386) 评论(0) 推荐(0)
摘要:Go中数学运算和比较运算要求包含的值具有相同的类型。如果不是的话,则在尝试运行代码时会报错。 为变量分配新值也是如此。如果所赋值的类型与变量的声明类型不匹配,也会报错。 解决方法是使用转换,它允许你将值从一种类型转换为另一种类型。只需提供要将值转换成的类型,后面紧接着是在圆括号中的要转换的值。 结果 阅读全文
posted @ 2021-01-16 10:58 牛奔 阅读(92) 评论(0) 推荐(0)
摘要:字符串常用语表示一系列文本字符,而Go的符文(rune)则用于表示单个字符。 字符串字面量由双引号(")包围,但rune字面量由单引号(')包围。 Go程序几乎可以使用地球上任何语言的任何字符,因为Go使用Unicode标准来存储rune。rune被保存为数字代码,而不是字符本身,如果你把rune传 阅读全文
posted @ 2021-01-16 10:56 牛奔 阅读(117) 评论(0) 推荐(0)
摘要:math/rand包有一个Intn函数,可以生成一个随机数,所以我们需要导入math/rand。然后调用rand.Intn生成随机数。 等一下!Intn来自math/rand包,那为什么我们调用包的时候使用的是rand.Intn,而不是math/rand.Intn呢? 一个是包的导入路径,另一个是包 阅读全文
posted @ 2021-01-16 10:54 牛奔 阅读(830) 评论(0) 推荐(0)
摘要:变量声明 在Go中,变量是包含值的一块存储。可以使用变量声明为变量命名。只需使用var关键字,后跟所需的名称以及变量将保存的值的类型。 一旦你声明了一个变量,就可以用=为它分配该类型的任何值: quantity = 2 customerName = "xiaoming" 还可以在同一语句中为多个变量 阅读全文
posted @ 2021-01-16 07:34 牛奔 阅读(190) 评论(0) 推荐(0)