随笔分类 - GO
go学习
摘要:将字符串以下划线分割 下面的代码会将给定的字符串以下划线分割。 import ( "fmt" "strings" "regexp")func main() { snakeCase := ConvertToSnakeCase("ILikeProgrammingINGo123") fmt.Println
阅读全文
摘要:package mainimport ( "fmt" "log" "os" "strconv" "strings")func DemoTest() { var Name string var Version string { fmt.Printf("%s-%s",Name,Version) }}fu
阅读全文
摘要:https://github.com/bytedance/sonic 一、魔法:调用runtime中的私有函数 按照Go的编译约定,代码包内以小写字母开头的函数、变量是私有的: package test// 私有func abs() {}// 公共func Abs() {} 对于test包中abs函
阅读全文
摘要:写代码其实也有很多套路和经验,这篇介绍几个让golang代码更优雅的四个套路。 这篇想和大家聊一聊golang的常用代码写法。在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验。这些经验是代表你对一些问题,或者一类问题的思考和解决。处理一个问题的方法有很多,如果频繁遇
阅读全文
摘要:概要 在调用第三方 API 的时候, 基本都有访问限速的限制条件. 第三方的 API 有多个的时候, 就不太好控制访问速度, 常常会导致 HTTP 429(Too Many Requests) 然后就会有一段时间的禁止访问. 为了应对这种限速的情况, 通过一个简单的请求队列来控制访问的速度, 之后基
阅读全文
摘要:迭代器变量上使用 goroutine 这算高频吧。 package mainimport ( "fmt" "sync")func main() { var wg sync.WaitGroup items := []int{1, 2, 3, 4, 5} for index, _ := range it
阅读全文
摘要:欢迎来到 Golang 系列教程的第 32 篇。 package mainimport ( "fmt")func TestDefer() { defer func() { if err:=recover();err!=nil{ fmt.Println(err) //log.Println(err)
阅读全文
摘要:package mainimport ( "encoding/json" "fmt" "log" "os")type YY struct { S string I float64}func main() { _=json.NewEncoder(os.Stdout).Encode(&YY{ S: "t
阅读全文
摘要:package mainimport "fmt"func main() { //var x,y,z = 1,2,3 var s []*int = []*int{new(int)} for i:=range s { fmt.Println(*s[i]) //s=nil会报错,空指针不可取值 = 0 }
阅读全文
摘要:https://golang.iswbm.com/c02/c02_06.html 1. 对方法的调用限制 接口是一组固定的方法集,由于静态类型的限制,接口变量有时仅能调用其中特定的一些方法。 请看下面这段代码 package main import "fmt" type Phone interfac
阅读全文
摘要:type SshFilterGroupQ struct { PaginationQ SshFilterGroup}//Allfunc (m SshFilterGroupQ) Search() (pagination PaginationQ, err error) { pagination = m.P
阅读全文
摘要:(一)form-data: 对应于http请求中的multipart/form-data。 它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。 既可以上传键值对,也可以上传文件。 Content-disposition,用来说明字段的一些信息。 当上传的 key 是文件时: Content
阅读全文
摘要:https://github.com/cookieY/Yearning/blob/ad6c04b2904bb4cdcb64f732ce088d072751074e/src/lib/toolbox.go#L237 package soar import ( "errors" "fmt" "github
阅读全文
摘要:package mainimport ( "fmt" "strconv")func Demo() (s *[]string){ s = new([]string) // s = &[]string{} return s}func main() { var s interface{}= "test"
阅读全文
摘要:多字段更新? 并发编程中,原子更新多个字段是常见的需求。 举个例子,有一个 struct Person 的结构体,里面有两个字段。我们先更新 Person.name,再更新 Person.age ,这是两个步骤,但我们必须保证原子性。 有童鞋可能奇怪了,为什么要保证原子性? 我们以一个示例程序开端,
阅读全文
摘要:这是Go单元测试从入门到放弃系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试。 在上一篇《Go单元测试从入门到放弃—0.单元测试基础》中,我们介绍了Go语言编写单元测试的基础内容。 而实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是
阅读全文
摘要:import ( "database/sql/driver" "encoding/json" "github.com/sirupsen/logrus" "sshfortress/util")type HardwareInfo struct { Disk string `json:"hi_disk"`
阅读全文
摘要:实践是检验真理的唯一标准,所以当我们遇到一个不确定的问题,直接写demo来验证,因为切片的特点,我们可以分多种情况来验证: 不指定索引,动态扩容并发向切片添加数据 func concurrentAppendSliceNotForceIndex() { sl := make([]int, 0) wg
阅读全文
摘要:nil 切片、空切片与零切片是切片的三种状态,nil 切片是指在声明时未做初始化的切片,不用分配内存空间,一般使用 var 创建。使用 make 创建的空切片需要分配内存空间,nil 切片与空切片的长度、容量都为 0 ,如果我们要创建长度容量为 0 的切片,官方推荐 nil 切片。零切片指初始值为类
阅读全文
摘要:要研究 Go 的定时器,那么肯定要从 time.Ticker 这个结构体入手。 先看一个官网的例子: func main() { ticker := time.NewTicker(time.Second) defer ticker.Stop() done := make(chan bool) go
阅读全文

浙公网安备 33010602011771号