Go
农夫小田
心脏跳动 && 北京上天大学 - 辛劳学籽
展开
-
Golang Gorm 自动分批查询
如果目标是查询到所有结果。由于该方法每次查询到的结果会丢弃,需要手动将查询到的结果补充到外部大列表中。总共1408条数据,每一批查询500个,查询三次,最后将结果拼接到大列表中。目标查询全量数据,但需要每次Limit分批查询,保护数据库。原创 2024-03-21 20:30:00 · 1226 阅读 · 0 评论 -
Go 空切片 VS nil切片
在 Go 语言中,空切片和 nil 切片是两种不同的概念。原创 2024-02-19 21:00:00 · 867 阅读 · 0 评论 -
Go中interface != nil不一定不是nil
interface{} 值!= nil不一定不是nil,应使用reflect库判断是否是nil。原创 2024-01-02 19:38:11 · 690 阅读 · 0 评论 -
Go init 顺序 使用建议
单个包中,执行顺序:**import --> const --> var --> init()**多个包中,如果一个包导入了其他包,则首先初始化导入的包原创 2023-08-03 14:36:39 · 238 阅读 · 0 评论 -
Golang 浮点数运算 避免精度损失 Decimal包
Golang小数计算存在精度损失Decimal由于golang中默认没有decimal类型,如果想使用decimal类型需要通过第三方包原创 2022-06-07 21:45:00 · 2111 阅读 · 3 评论 -
依赖注入(DI):对比Java,Go实现方式
熟悉Java语言的同学一定不陌生,依赖注入(Dependency Injection)是Spring框架中的设计基石,有开发经验的同学一定会熟知它的概念(当然也是面试常考问题)。然而在Golang中,我发现很多项目的代码缺少了这一部分,这也是由于Golang并不是严格意义上的面向对象的编程语言。本文将从Java与Go常用框架的DI实现方式分析,详细介绍他们之间的区别。原创 2022-05-03 16:31:08 · 844 阅读 · 0 评论 -
golang init顺序
init 顺序1、在同一个 package 中,可以多个文件中定义 init 方法2、在同一个 go 文件中,可以重复定义 init 方法3、在同一个 package 中,不同文件中的 init 方法的执行按照文件名先后执行各个文件中的 init 方法4、在同一个文件中的多个 init 方法,按照在代码中编写的顺序依次执行不同的 init 方法5、对于不同的 package,如果不相互依赖的话,按照 main 包中 import 的顺序调用其包中的 init() 函数6、如果 package 存原创 2022-04-13 22:00:00 · 3332 阅读 · 2 评论 -
Go 排序 sort.Slice 及其他方法
自定义排序[最常用]sort.Slice 不稳定排序sort.SliceStable 稳定排序family := []struct { Name string Age int}{ {"Alice", 23}, {"David", 2}, {"Eve", 2}, {"Bob", 25},}// Sort by age, keeping original order or equal elements.sort.SliceStable(fa原创 2022-04-11 21:30:00 · 3740 阅读 · 0 评论 -
Go 单引号 双引号 反引号
单引号int32类型,获得值得unicode值双引号字符串字面量,不支持多行,支持转义反引号原生的字符串字面量,可以多行,不支持转义,多用于多行消息等package mainimport "fmt"func main() { a := 'q' fmt.Printf("value=%v; type=%T\n", a, a) // output: value=113; type=int32 b := "you are beautiful\n" fmt.Println(b) //原创 2022-03-08 22:30:00 · 243 阅读 · 0 评论 -
Goland goimport格式规范
一般要求先导入公共资源包,再导入自己需要的特殊资源包作用效果标准库、当前工程包、golang官方包、初始化包和github.com仓库的引入进行分类、排序,在不容分类间使用空行进行区分。方法Preferences–Editor–Code Style–Go–Imports勾选Move all imports in a single declarationGroup stdlib imports Move allstdlib imports in a single group...原创 2022-03-07 14:51:05 · 857 阅读 · 0 评论 -
golang 基本数据类型占用大小
int8: 8位,就是一个字节int16: 2个字节int32: 4个字节int64:8个字节float32: 4个字节float64: 8 个字节int 比较特殊,占用多大取决于你的cpu32位cpu 就是 4个字节64位 就是 8 个字节float32: 4个字节float64:8个字节string英文的ascii的string 1个英文字符或英文标点占1byte中文的string 一个文字占用 3 byte要搞清楚这个问题先要了解几个常用的存储单位的转换1.bit(位)转载 2021-09-16 09:50:03 · 3144 阅读 · 0 评论 -
golang heap堆写法 大顶堆排序结构体
leetcode 23 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。核心:heap堆新建的需要是slice形式的才可以排序,即需要包装两层需要注意结构体slice中元素是否是指针/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ import原创 2021-09-15 17:34:01 · 483 阅读 · 0 评论 -
输入两个数字a,b k自增,从a到b最小移动次数
两个正整数a,b,让a变为b,每次对a进行加k或者减k操作,每次k进行一次自增k=k+1(k初始值1)求自增多少次可以让a变为b,求最小操作次数输入第一行t,接下来t行,每行有两个正整数a,b1<=t<=100, 0<=a,b<=10^9,0<=|a-b|<=100输出为t行,每一行为一组答案,表示最小操作次数参考:https://blog.csdn.net/weixin_33796177/article/details/91957124package main原创 2021-09-10 20:42:06 · 302 阅读 · 1 评论 -
Golang前序遍历+后序遍历(N叉树)中序遍历(二叉树) 统一规范化写法 迭代法
前序遍历:采用stack(先进后出),从子节点反序灌入/** * Definition for a Node. * type Node struct { * Val int * Children []*Node * } */func preorder(root *Node) []int { stack := make([]*Node, 0) res := make([]int, 0) if root == nil{ return原创 2021-09-09 21:12:46 · 404 阅读 · 0 评论 -
Go 大顶堆 小顶堆 Heap使用方法
Go 提供了 container/heap 这个包来实现堆的操作。堆实际上是一个树的结构,每个元素的值都是它的子树中最小的,因此根节点 index = 0 的值是最小的,即最小堆。堆也是实现优先队列 Priority Queue 的常用方式。堆中元素的类型需要实现 heap.Interface 这个接口:type Interface interface { sort.Interface Push(x interface{}) // add x as element Len()转载 2021-09-08 12:35:15 · 2824 阅读 · 5 评论 -
Go内存模型
前言这篇文章主要介绍Go内存分配和Go内存管理,会轻微涉及内存申请和释放,以及Go垃圾回收。从非常宏观的角度看,Go的内存管理就是下图这个样子,我们今天主要关注其中标红的部分。Go这门语言抛弃了C/C++中的开发者管理内存的方式,实现了主动申请与主动释放管理,增加了逃逸分析和GC,将开发者从内存管理中释放出来,让开发者有更多的精力去关注软件设计,而不是底层的内存问题。这是Go语言成为高生产力语言的原因之一。我们不需要精通内存的管理,因为它确实很复杂,但掌握内存的管理,可以让你写出更高质量的代码,另外,还能助转载 2021-07-23 10:11:14 · 321 阅读 · 0 评论 -
RPC-API访问过程流图
原创 2021-04-13 11:03:09 · 175 阅读 · 0 评论 -
go url解析 详解
package mainimport ( "fmt" "net/url" "strings")func main() { Url := "https://root:123456@www.baidu.com:0000/login?name=xiaoming&name=xiaoqing&age=24&age1=23#fffffff" //Parse函数解析Url为一个URL结构体,Url可以是绝对地址,也可以是相对地址 // type URL struct { /原创 2020-12-23 14:43:33 · 6532 阅读 · 0 评论 -
go 字符串切割转int32数组/切片
输入:字符串str, 分隔符sep输出:int32类型切片 i32Listimport( "strings" "strconv")func SplitToInt32List(str string, sep string)(i32List []int32){ if str == ""{ return } strList := strings.Split(str, sep) if len(strList) == 0{ return } for _, item := range s原创 2020-10-30 20:16:53 · 2571 阅读 · 0 评论 -
go切片 去重
以下示例通过对一个[]int32类型去重由于go中没有set字典,但存在map可以保证值的唯一性func DeduplicationI32List(req []int32) (response []int32){ i32Map := make(map[int32]bool) for _, i32 := range req{ if !i32Map[i32]{ i32Map[i32] = true } } return}...原创 2020-10-30 20:08:57 · 369 阅读 · 0 评论 -
go string和int转化int int32 int64 三种类型
以下汇总int int64 int32 类型转换方式(带下划线,表示是该类型的变量)另外注意,如果采用string转换别的,一定要判断err是否为空,非法字符是无法转换成功的。int类型互转:string转成int:int_, err := strconv.Atoi(string_)int转成string:string_ := strconv.Itoa(int_)int64类型互转string转成int64:int64_, err := strconv.ParseInt(string_,原创 2020-10-17 16:36:37 · 5362 阅读 · 0 评论 -
go time类型、时间戳类型转换字符串 仅保留年月日
如果有小伙伴问,Format 后面添加的那个字符串可不可以改成别的。不能改的啦,2006年是go的诞生日期,纪念一下,方便记忆的话:61345timeNow := time.Now()// 解析到秒timeString := timeNow.Format("2006-01-02 15:04:05") // 2020-10-17 16:20:20// 解析到 年月日 (忽略后面的时:分:秒 即可)timeDayString := timeNow.Format("2006-01-02") // 2原创 2020-10-17 16:26:30 · 1531 阅读 · 0 评论 -
go time 获取本月第一天 最后一天 当天零点 时间戳
方法一:通过 time.AddDate函数来计算本月开始时间与结束时间-需要提前获取当天0点时间;方法二:通过 time.Date()函数来构造本月开始时间与结束时间。timeNow := time.Now() // 获取当前时间 time类型// 方法一: 通过AddDate操作timeToday := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, timeNow.Location()) // 获取当天原创 2020-10-17 16:13:25 · 2344 阅读 · 0 评论 -
对比学习:Golang Vs Python
对比学习:Golang VS Python3 Golang和Python都是目前在各自领域最流行的开发语言之一。Golang其高效而又友好的语法,赢得了很多后端开发人员的青睐,最适用于高并发网络编程的语言之一。Python不用说,TIOBE排行榜的前十常驻居民,现在已经稳定在前五了。在机器学习、AI、数据分析领域成为必学语言。两门编程语言在语法上都有各自的特点,而且都易学易用。本文对比这两门语言目的不是争谁优谁略,只是为了对...转载 2020-08-30 15:46:23 · 835 阅读 · 0 评论 -
Golang字符串操作汇总
字符串操作(strings和strconv包)判断是否以prefix开头strings.HasPrefix(s, prefix string) bool判断是否以suffix结尾strings.HasSuffix(s, suffix string) bool判断包含关系strings.Contains(s, substr string) bool判断str在s中的索引,s第一个字符,-1表示s不包含strstrings.Index(s, str string)原创 2020-07-19 22:28:54 · 268 阅读 · 0 评论 -
Go语言-代码特性与规范——持续更新
Go语言适用场景Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。Go 语言同时也是一门可以用于实现一般目标的语言,例如对于文本的处理,前端展现,甚至像使用脚本一样使用它。因为垃圾回收和自动内存分配的原因,Go 语言不适合用来开发对实时性要求很高的软件。Go 语言可以在 Intel 或 ARM 处理器上运行,原创 2020-07-19 21:29:04 · 505 阅读 · 0 评论 -
Mac GoLand快捷键
Mac 键盘符号说明⌫ Delete, ⎋ Escape (Esc)⇥ 右制表符(Tab键)Home Fn + ←⇞ Page Up(Fn+↑)⌦ 向前删除键(Fn+Delete)⇤ 左制表符(Shift+Tab)En...转载 2020-07-19 16:30:28 · 13526 阅读 · 0 评论