随笔分类 -  go

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
摘要:前言 我们在编写程序时,经常会遇到一些高精度的数学运算,这时候使用简单的运算符会造成精度的缺失。 这里引用了这个第三方包 https://github.com/shopspring/decimal 做了下简单的封装 封装 package util import ( "math/rand" "gith 阅读全文
posted @ 2021-05-13 12:53 牛奔 阅读(209) 评论(0) 推荐(0) 编辑
摘要:前言 有时候我们的程序要求整分钟开始运行,这时候就需要对当前时间进行判断 package main import ( "fmt" "time" ) func main() { for { nowTime := time.Now().Unix() //判断是否是整分钟,执行一次我们要运行的程序,跳出循 阅读全文
posted @ 2021-04-27 19:23 牛奔 阅读(115) 评论(0) 推荐(0) 编辑
摘要:判断进程是否挂掉 ps -ef | grep ./blog |wc -l 如果输出为1,说明进程挂掉了 如果输出为2,说明进程正常运行 编辑脚本来检测和完成重启 vim restart.sh 逻辑代码,每分钟检测一次,判断进程是否运行,无则完成重启 #!/bin/bash while : #循环,为 阅读全文
posted @ 2021-04-18 14:42 牛奔 阅读(377) 评论(0) 推荐(0) 编辑
摘要:前言 有时候我们需要根据切片中的某个字段进行切片排序,但sort包中只有默认基本类型 int 、 float64 和 string 的排序,所以我们可以手动实现sort包的 sort.Interface 接口,来完成自定义排序。这个接口有三个方法 Len() 、 Less(i,j) 和 Swap(i 阅读全文
posted @ 2021-04-17 21:48 牛奔 阅读(429) 评论(0) 推荐(0) 编辑
摘要:前言 实现切片分页,主要是根据选择页码和每页显示数量,计算了切片的开始、结束索引地址 package main import "math" func main() { slice1 := []int{1, 2, 3, 4, 5, 6, 7} sliceStart, sliceEnd := Slice 阅读全文
posted @ 2021-04-16 14:00 牛奔 阅读(1494) 评论(0) 推荐(0) 编辑
摘要:mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装。 安装 go get gopkg.in/mgo.v2 使用 引入第三方包 import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2 阅读全文
posted @ 2021-04-15 20:39 牛奔 阅读(558) 评论(0) 推荐(0) 编辑
摘要:前言 我们已经知道 Go 语言的字典是一个无序集合,如果你想要对字典进行排序,可以通过分别为字典的键和值创建切片,然后通过对切片进行排序来实现。 按照键进行排序 如果要对字典按照键进行排序,可以这么做: keys := make([]string, 0) for k, _ := range test 阅读全文
posted @ 2021-04-08 21:22 牛奔 阅读(552) 评论(0) 推荐(0) 编辑
摘要:字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需要 3 个字节。 声明和初始化 字符串的声明和初始化非常简单,举例如下: var str strin 阅读全文
posted @ 2021-04-08 20:49 牛奔 阅读(1046) 评论(0) 推荐(0) 编辑
摘要:前言 使用任何编程语言都会遇到判空的问题,那么Golang对于自定义的结构体类型如何判空呢? 其实空结构体可不是简单的与nil做比较哦。请看下面两种方法: package main import ( "fmt" "reflect" ) type A struct { name string age 阅读全文
posted @ 2021-04-08 10:41 牛奔 阅读(6800) 评论(0) 推荐(1) 编辑
摘要:简介 在Linux中,Cron是计划任务管理系统,通过crontab命令使任务在约定的时间执行已经计划好的工作,例如定时备份系统数据、周期性清理缓存、定时重启服务等。 本文介绍的cron库是一个用于管理定时任务的库,就是用Go实现Linux中crontab命令的相似效果。 快速使用 文本代码使用 G 阅读全文
posted @ 2021-04-04 11:12 牛奔 阅读(2466) 评论(0) 推荐(1) 编辑
摘要:示例 gin Next()使用方法 package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() m1 := func(c *gin.Context) { fm 阅读全文
posted @ 2021-03-26 12:39 牛奔 阅读(510) 评论(0) 推荐(0) 编辑
摘要:疑问 请问main调用GetUserInfo后返回的&User{...}。这个变量是分配到栈上了呢,还是分配到堆上了? package main type User struct { ID int64 Name string } func GetUserInfo() *User { return & 阅读全文
posted @ 2021-03-10 23:51 牛奔 阅读(543) 评论(0) 推荐(1) 编辑
摘要:问题 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 牛奔 阅读(57) 评论(0) 推荐(0) 编辑
摘要:为什么要控制goroutine的数量? 在我们开发过程中,如果不对goroutine加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。 用什么方法控制goroutine的数量? 尝试 chan func main() { userCo 阅读全文
posted @ 2021-03-03 15:58 牛奔 阅读(389) 评论(0) 推荐(0) 编辑
摘要:3月3日写 阅读全文
posted @ 2021-03-02 23:28 牛奔 阅读(88) 评论(0) 推荐(0) 编辑
摘要:embed 是什么 embed是在Go 1.16中新加入的包。它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。 为什么需要 embed 包 在以前,很多从其他语言转过来Go语言的同学会问到,或者踩到一个坑。就是以为Go语言所打包的二进制文件 阅读全文
posted @ 2021-03-01 20:58 牛奔 阅读(3188) 评论(1) 推荐(1) 编辑
摘要:前言 数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。 Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 如果map由多协程同时读和写就会出现 fatal error:concurrent map r 阅读全文
posted @ 2021-02-24 11:17 牛奔 阅读(12386) 评论(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 牛奔 阅读(616) 评论(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 牛奔 阅读(141) 评论(0) 推荐(0) 编辑
摘要:简介 Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。 目前 Go 语言支持 Window 阅读全文
posted @ 2021-02-21 22:34 牛奔 阅读(1696) 评论(0) 推荐(0) 编辑

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