随笔分类 - go
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
摘要:Go语言类型系统 从计算机底层看,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整数、浮点数、比特数组、内存地址等。但是直接操控底层计算机指令进行编程是非常繁琐和容易出错的,所以Go语言对底层指令进行一些封装和对数据进行一些抽象,从而使得编程变得直观和易于理解。 在Go语言中,数据通
阅读全文
摘要:常量 相对于变量而言,常量是在程序使用过程中,不会改变的数据。有些地方你需要将定义好的常量重复使用,代码中你不允许它的值改变。例如 圆周率 在程序执行过程中不会改变。 常量的声明 const Pi float64 = 3.14 const 声明、Pi 常量、float64 类型、3.14 值 多变量
阅读全文
摘要:变量 Go语言是静态强类型语言,所以变量是有明确类型的。变量实质上就是在内存中的一小块空间,用来存储特定类型的可变数据。如果没有变量我们的程序只能将数值写死都是静态的数据,无法更改,变量可以让我们进行动态的操作。在数学概念中变量表示没有固定的值,可以随时改变的数。例如:除数、减数与被减数。 类型 变
阅读全文
摘要:Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母组成,如 scanner.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 scanner_test.go 。文件名不包含空格或其他特殊字符。 一个源文件可以包含任意多行的代码,Go 本身没有对源文件的大小
阅读全文
摘要:创建第一个Go程序 新建一个 helloworld.go 文件,写入以下程序 package main import ( "fmt" ) // 一个函数声明 /* 一个main函数声明 */ func main() { fmt.Println("Hello, 世界") } 运行程序 go run h
阅读全文
摘要:下载介绍 在go的官方网址上下载go最新版本https://golang.google.cn/dl/,或者在 Go 的中文网上下载https://studygolang.com/dl,两个网站打开的内容只有语言不同而已,网站上清晰的标注了不同操作系统需要对应安装哪个版本,其中加粗的是该操作系统的推荐
阅读全文
摘要:前言 在任何编程语言中,关乎到数据的排序都会有对应的策略,我们来看下 Golang 是怎样对数据进行排序,以及我们如何优化处理使用 go 排序 go 可以针对任何对象排序,虽然很多情况下是一个 slice 切片,或者是包含 slice 的一个对象。 go 排序(接口)有三个要素: 待排序元素个数 n
阅读全文
摘要:前言 Golang 支持交叉编译, 即同一份代码,在一个平台上生成,然后可以在另外一个平台去执行。 之前写过一篇 Golang windows下 交叉编译 感觉写的不够全面,这篇作为补充。 交叉编译 Mac 上编译 # 生成编译文件,在 Linux 中运行 CGO_ENABLED=0 GOOS=li
阅读全文
摘要:前言 我们在编写程序时,经常会遇到一些高精度的数学运算,这时候使用简单的运算符会造成精度的缺失。 这里引用了这个第三方包 https://github.com/shopspring/decimal 做了下简单的封装 封装 package util import ( "math/rand" "gith
阅读全文
摘要:前言 有时候我们的程序要求整分钟开始运行,这时候就需要对当前时间进行判断 package main import ( "fmt" "time" ) func main() { for { nowTime := time.Now().Unix() //判断是否是整分钟,执行一次我们要运行的程序,跳出循
阅读全文
摘要:判断进程是否挂掉 ps -ef | grep ./blog |wc -l 如果输出为1,说明进程挂掉了 如果输出为2,说明进程正常运行 编辑脚本来检测和完成重启 vim restart.sh 逻辑代码,每分钟检测一次,判断进程是否运行,无则完成重启 #!/bin/bash while : #循环,为
阅读全文
摘要:前言 有时候我们需要根据切片中的某个字段进行切片排序,但sort包中只有默认基本类型 int 、 float64 和 string 的排序,所以我们可以手动实现sort包的 sort.Interface 接口,来完成自定义排序。这个接口有三个方法 Len() 、 Less(i,j) 和 Swap(i
阅读全文
摘要:前言 实现切片分页,主要是根据选择页码和每页显示数量,计算了切片的开始、结束索引地址 package main import "math" func main() { slice1 := []int{1, 2, 3, 4, 5, 6, 7} sliceStart, sliceEnd := Slice
阅读全文
摘要:mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装。 安装 go get gopkg.in/mgo.v2 使用 引入第三方包 import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2
阅读全文
摘要:前言 我们已经知道 Go 语言的字典是一个无序集合,如果你想要对字典进行排序,可以通过分别为字典的键和值创建切片,然后通过对切片进行排序来实现。 按照键进行排序 如果要对字典按照键进行排序,可以这么做: keys := make([]string, 0) for k, _ := range test
阅读全文
摘要:字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需要 3 个字节。 声明和初始化 字符串的声明和初始化非常简单,举例如下: var str strin
阅读全文
摘要:前言 使用任何编程语言都会遇到判空的问题,那么Golang对于自定义的结构体类型如何判空呢? 其实空结构体可不是简单的与nil做比较哦。请看下面两种方法: package main import ( "fmt" "reflect" ) type A struct { name string age
阅读全文
摘要:简介 在Linux中,Cron是计划任务管理系统,通过crontab命令使任务在约定的时间执行已经计划好的工作,例如定时备份系统数据、周期性清理缓存、定时重启服务等。 本文介绍的cron库是一个用于管理定时任务的库,就是用Go实现Linux中crontab命令的相似效果。 快速使用 文本代码使用 G
阅读全文
摘要:示例 gin Next()使用方法 package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() m1 := func(c *gin.Context) { fm
阅读全文
摘要:疑问 请问main调用GetUserInfo后返回的&User{...}。这个变量是分配到栈上了呢,还是分配到堆上了? package main type User struct { ID int64 Name string } func GetUserInfo() *User { return &
阅读全文

浙公网安备 33010602011771号