Go
文章平均质量分 64
DDDDemo
兀兀不修善 腾腾不造恶 寂寂断见闻 荡荡心无着
展开
-
【转载】得到Go程序的汇编代码的方法
转自:https://colobu.com/2018/12/29/get-assembly-output-for-go-programs/本文仅供个人备份学习,请访问原网址↑。有多种方式可以获得Go程序的汇编代码, 尽管输出的格式有些不同,但是都是方便阅读的汇编代码,可以帮助我们更好的了解程序的底层运行方式。我们看下面一段代码, 它是sync.Once的实现,去掉了不必要的注释,复制出来用来研究的一段小代码。once.go 1 2 3 ..转载 2021-03-05 10:05:36 · 612 阅读 · 1 评论 -
【golang】小笔记-要点tips-持续更新中
1、接口绕口令当接收者为值类型时,无论调用者是值类型还是指针类型,接收者的更改都不会影响调用者。当接收者是指针类型时,无论调用者是值类型还是指针类型,接收者的更改均会影响调用者。type Person struct { Name string Age int}func (p Person) GetName() string { return p.Name}func (p Person) SetName(name string) { p.Name = name}func原创 2021-02-22 17:27:56 · 168 阅读 · 1 评论 -
【golang】package小要点
非原创,本文来自下述网址:https://juejin.cn/post/6844903808942735368问题一:依赖的包下载到哪里了?还在GOPATH里吗?不在。 使用Go的包管理方式,依赖的第三方包被下载到了$GOPATH/pkg/mod路径下。如果你成功运行了本例,可以在您的$GOPATH/pkg/mod 下找到一个这样的包 github.com/astaxie/beego@v1.11.1问题二: 依赖包的版本是怎么控制的?在上一个问题里,可以看到最终下载在$GOPATH/p.转载 2021-02-19 18:37:13 · 98 阅读 · 0 评论 -
【golang】不深入的虐一虐defer
原本想写一篇关于defer的常用和底层调用逻辑,然后发现其实自己目前还没能力。推荐两篇文,再列一下自己的一些小demo & 执行结果 & 反汇编过程。一、推荐的文章煎鱼大佬的深入理解Go deferhttps://eddycjy.com/posts/go/defer/2019-05-27-defer/真迹大佬的https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/gol...原创 2021-02-08 16:11:07 · 2422 阅读 · 0 评论 -
【golang】反编译小笔记
go build -gcflags=all="-N -l" main.gogo tool objdump -s "main.main" main.exe (go tool objdump -s Domain.exe)原创 2021-02-07 11:17:26 · 2829 阅读 · 0 评论 -
【golang】粗浅理解slice
一、slice的结构原创 2021-02-05 12:57:11 · 170 阅读 · 0 评论 -
Golang 源码-cache2go解读
一、cache2go 源码https://github.com/muesli/cache2go根据网上极其雷同的众多推荐,此为对go语言入门小白非常友好的开源项目。废话少说,下面我从我自己的角度做一下学习笔记(欢迎指正)。...原创 2021-01-15 14:54:07 · 400 阅读 · 0 评论 -
golang 赋值时的一些简单笔记
package maintype theIntType intfunc main() { var val = 23 var p int _ = first(val, &p) _ = second(val, &p)}func first(val int, p *int) (*theIntType) { *p = val return (*theIntType)(p)}func second(val int, p *int) (*the..原创 2020-11-02 16:15:10 · 481 阅读 · 0 评论 -
Go的一些小笔记【持续更新至】
1. cap和len的使用在查看数组时,len与cap返回的结果是一致的在查看slice时,len查看的是可见元素的个数,cap查看的是所有元素的个数参考文档地址为:https://cyent.github.io/golang/datatype/arr_sli_len_cap/2. append的用法有两种用法,slice = append(slice, elem1, el...原创 2019-11-29 18:44:17 · 159 阅读 · 0 评论 -
Go 入门 - struct的小demo与理解
看到两道题,以下是题目和答案,以及我为了对题目更好地理解写的demo与输出结果第一题:1、假设定义了下面的结构:type Person struct { name string age int}下面两行之间的区别是什么?var p1 Personp2 := new(Person)答案:第一行:var p1 Person 分配了Person-值给...原创 2019-11-28 14:00:56 · 201 阅读 · 0 评论 -
Go入门 - 无缓冲通道VS有缓冲通道
本文来源Golang并发编程有缓冲通道和无缓冲通道(channel)不同地方在于为了方便理解将代码做了微调侵删无缓冲通道是指在接收前没有能力保存任何值的通道。这种类型的通道要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作。如果两个goroutine没有同时准备好,通道会导致先执行发送或接收操作的goroutine阻塞等待。这种对通道进行发送...原创 2019-11-20 16:49:48 · 941 阅读 · 0 评论 -
Go Kit 相关博文推荐
Microservices with GoKithttps://gokit.io/examples/stringsvc.htmlHow to write a microservice in Go with Go kithttps://github.com/go-kit/kit/blob/master/examples/stringsvc1/main.gohttps://githu...原创 2019-06-20 19:35:55 · 275 阅读 · 0 评论 -
Go入门-goroutine&channel小练习
推荐好文章:理解 goroutine 的并发由浅入深剖析 go channelChannel的两个小练习 package mainimport "fmt"func main() { ch := make(chan int) quit := make(chan bool) go shower(ch, quit) for i := 0; i<10; i++ ...转载 2019-02-20 11:07:18 · 502 阅读 · 0 评论 -
Go入门-字符串
1. 建立一个Go程序打印下面的内容(到100个字符):AAAAAAAAAAAAAAAAAAAAAAAAAAAA...package mainimport "fmt"func main() { str := "" for i := 1; i< 100; i ++ { fmt.Printf("%s\...转载 2019-02-13 23:52:19 · 147 阅读 · 0 评论 -
Go入门- 简单循环代码
《学习Go语言》1. for的应用创建一个基于for的简单循环,使其循环10次,并且使用fmt包打印出计数器的值package mainimport "fmt"func main() { for i := 0; i < 10; i++ { fmt.Printf("%d \n", i) }}2.用goto改写上述循环packag...转载 2019-02-13 22:52:24 · 2038 阅读 · 0 评论 -
Go入门-方法调用
1.假设有下面的程序,要注意是包container/vector曾经是Go的一部分,但是内建append出现后,就被移除了。然而对于当前的问题并不重要。这个包实现了有push和pop方法的栈结构package mainimport "container/vector"func main() { k1 := vector.IntVector{} k2 := &vec...转载 2019-02-19 13:13:56 · 1115 阅读 · 0 评论 -
Go 入门 - Linked List
1. Make use of the package container/list to create a(doubly) linked list.Push the values 1,2 and 4 to the list and then print it.package mainimport ( "container/list" "fmt")func main() { ...转载 2019-02-19 11:30:10 · 335 阅读 · 0 评论 -
Go入门 - 整数排序
编写函数,返回其(两个)参数正确的(自然)数字顺序package mainimport "fmt"func main() { a := 111 b := 22 m,n := order(a, b) fmt.Printf("The first one is %d and the second one is %d", m, n)}func order(a, b int) (...转载 2019-02-14 17:14:03 · 544 阅读 · 0 评论 -
Go入门 - 栈
1. 创建一个固定大小保存证书的栈,它无须超出限制的增长。定义push函数(入栈)和pop函数(出栈)package mainimport "fmt"//定义一个新的类型来表达栈,需要一个数组和一个指向最后一个元素的索引type stack struct { i int data [10]int}//注意,Go的数据传递中,是值传递,但是这样不能满足我们的预期。因为一个副本...转载 2019-02-14 18:36:59 · 224 阅读 · 0 评论 -
Go入门 - 斐波那契数列
《学习Go语言》斐波那契数列以:1 1 2 3 5 8 13 ...开始编写一个接受int值的函数,并给出这个值得到的斐波那契数列package mainimport "fmt"func fibonacci(value int) [] int { x := make([]int, value) //创建一个用于保存函数执行结果的array x[0], x[1] = 1,...转载 2019-02-15 16:24:31 · 238 阅读 · 0 评论 -
Go入门 - Map
《学习Go语言》map函数是一个接受一个函数和一个列表作为参数的函数,函数应用于列表中的每个元素,而一个新的包含有计算结果的列表被返回,因此:map(f(),(a1,a2,a3,...,an-1,an)) = (f(a1),f(a2),f(a3),...,f(an-1),f(an))编写Go中的简单的map函数,它能工作于操作整数的函数package mainimport "fm...转载 2019-02-15 16:34:03 · 419 阅读 · 0 评论 -
Go入门 - 最大最小值
《Go编程语言》编写一个求int slice([] int)的最大值最小值的函数 package mainimport "fmt"func max(l []int) (max int) { max = l[0] for _, v := range l { if v > max { max = v } } return}func min(l [...转载 2019-02-15 16:38:59 · 5066 阅读 · 0 评论 -
Go入门 - 冒泡排序
《学习Go语言》用go语言实现冒泡函数package mainimport "fmt"func bubbleSort(n []int) { for i:= 0; i<len(n) -1; i++ { for j := i+1; j < len(n); j++ { if n[j] < n[i] { n[i], n[j] = n[j], n[i]...转载 2019-02-15 16:45:14 · 164 阅读 · 1 评论 -
Go入门 - 函数返回函数
《学习Go语言》函数返回函数的功能实现,编写一个函数,返回另一个函数。创建一个plusX(x)的函数,返回一个函数用于对整数加上xpackage mainimport "fmt"func main() { p := plusX(10) fmt.Println(p(11))}func plusX(x int) func(int) int { return func(...转载 2019-02-15 16:51:15 · 3400 阅读 · 0 评论 -
Go入门 - stack包
1、建立一个独立的包,为stack的实现创建一个合适的包,Push Pop和Stack类型需要被导出。并为此包编写一个单元测试,至少测试Push后Pop的工作情况。stack-as-package.go文件package stacktype Stack struct { i int data [10]int}func (s *Stack) Push(k int) {...转载 2019-02-15 18:13:22 · 6103 阅读 · 1 评论 -
Go入门 - 基础语法
1.Packagepackage是最基本的分发单位和工程管理中依赖关系的体现; 每个Go语言源代码文件开头都拥有一个package声明,表示源码文件所属代码包; 要生成Go语言可执行程序,必须要有main的Package包,且必须在该包下有main()函数; 同一个路径下只能存在一个package,一个package可以拆成多个源文件组成。2.importimport语句可以导入源...转载 2019-02-17 22:25:32 · 211 阅读 · 0 评论 -
Go 入门 - 指针
《学习Go语言》Go有指针,然而没有指针运算。因此他们更像是引用。在Go中调用函数的时候,变量是值传递的,所以为了修改一个传递入函数的值的效率和可能性,有了指针。所以如果这样写, *p++ ,表示(*p)++ :即,首先获取指针func Set (t *T) { x = t}func Set (t T) { x = &t}指向的值,然后对这个值加一。...转载 2019-02-19 10:49:49 · 132 阅读 · 0 评论 -
go语言25个关键字总结
转自:https://studygolang.com/articles/513var和const :变量和常量的声明 var varName type 或者 varName : = value package and import: 导入 func: 用于定义函数和方法 return :用于从函数返回 defer someCode :在函数退出之前执行 go : 用于并行 se...转载 2019-02-13 17:10:37 · 1362 阅读 · 0 评论 -
Go语言内建函数
转自:https://studygolang.com/articles/1977close用于channel 通讯。使用它来关闭channel。delete用于在map 中删除实例。len 和cap可用于不同的类型,len 用于返回字符串、slice 和数组的长度。计算容量的方法 cap() 可以测量切片最长可以达到多少。new用于各种类型的内存分配。make...转载 2019-02-13 17:27:34 · 405 阅读 · 0 评论 -
Go 入门 - 使用interface的map函数
使用interface的map函数,让它至少能同时工作于int和stringpackage mainimport "fmt"type e interface {}func mult2(f e) e { switch f.(type) { case int: return f.(int) * 2 case string: return f.(string) + f...转载 2019-02-19 11:00:29 · 1914 阅读 · 0 评论 -
Go入门 - 计算平均数
《学习Go语言》编写一个函数用于计算一个float64类型的slice的平均数package mainimport "fmt"func main() { xs := []float64{1,2,3,4,5,6,7} avg := average(xs) fmt.Printf("The average is %f", avg)}func average(xs []float...转载 2019-02-14 16:55:34 · 3909 阅读 · 0 评论