![](https://img-blog.csdnimg.cn/20190831173133813.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go
Tw!light
这个作者很懒,什么都没留下…
展开
-
通过dlv简单分析Go coredump文件
文章目录dlv调试工具安装调试Go程序core dump文件Linux环境配置Go环境配置测试用例总结dlv调试工具安装Github地址:https://github.com/go-delve/delveLinux安装:参考地址:https://github.com/go-delve/delve/blob/master/Documentation/installation/linux/install.md安装步骤(安装前确保$GOPATH已经安装):$ git clone https://git原创 2020-10-25 15:48:08 · 6192 阅读 · 0 评论 -
Go语言之string(int)强制转换
导火索这周五同事遇到一个问题让我来看看,大概逻辑如下(源码就不贴了):var l sync.Mutexvar m = make(map[string]interface{})func get(k string) interface{} { l.Lock() v,ok := m[k] l.Unlock() if !ok { return nil } return v}func set(k string, v interface{}){ l.Lock() defer l.Unl原创 2020-08-23 17:16:47 · 5126 阅读 · 1 评论 -
使用Go和C实例来探究Linux TCP之listen backlog
最近在看Go语言的tcp连接,由于涉及知识很多很杂,先零零碎碎记录一些,日后在整理。目录理论测试c语言版本Go语言版本总结参考文章理论有关TCP三次握手和传输数据作者之前也写过一篇,可以也阅读一下。Go语言中TCP、UDP都在net库里面封装好了,对应底层调用的函数都是Linux系统函数。这里我们主要关注TCP协议中listen函数中backlog参数。...原创 2019-11-13 16:07:40 · 1281 阅读 · 0 评论 -
通过汇编和源码两大神器探究 —— Go语言defer
又来还技术债了,几个星期之前就写了这篇博客的初稿,但是公司一直有事,就耽误这篇博客的发布。本文主要探究Go语言的defer关键字,后面还有一篇是关于panic and recover,读者可以前后两篇一起阅读。Tips:以下代码在go1.12.6 windows/amd64版本下测试分析,版本不同在分析源码的时候略有不同。目录小插曲基本用法底层实现runtime.defe...原创 2019-10-27 16:34:00 · 565 阅读 · 0 评论 -
通过汇编和源码两大神器探究 —— Go语言接口
Tips:以下代码在go1.12.6 windows/amd64版本下测试分析,版本不同在分析源码的时候略有不同。关于Go语言的接口的基本用法和特性这里就不说了,也不是这篇文章的重点,本文的重点是接口底层如何实现,通过汇编和源码循序渐进的分析。多余的也不多说,直接开始吧!Go语言的接口分为空接口和非空接口,空接口就是没有实现任何方法的接口,非空接口实现了至少一个方法。空接口和非空接口的底...原创 2019-10-13 15:42:37 · 693 阅读 · 0 评论 -
Go1.13之Linux系统环境安装和使用go module
本月初Go1.13终于发布,go mod代码管理工具也正式转正。本篇也是记录Go1.13版本在Linux系统的环境搭建和使用go mod工具。Linux发行版:CentOS7 64位Go安装版本:go1.13.linux-amd64目录Go环境安装使用go modgo.mod版本管理文件Go环境安装去官网下载Linux系统对应的安装包 解压安装包到/usr/loc...原创 2019-09-21 19:28:51 · 10844 阅读 · 0 评论 -
Go语言汇编入门
Tips:以下代码在go1.12.6 windows/amd64版本下测试分析,版本不同在分析源码的时候略有不同。虽然在前面的文章中,分析代码已经接触了一些Go语言的汇编代码的注解,比如在slice和Go语言笔记以及以后的文章中都会使用到Go汇编。本章主要讲解Go汇编大致流程的框架,对于刚接触Go汇编理解Go函数栈是比较友好的,结合具体实例分析让人通俗易懂。当然本人也是最近才学Go汇编,有讲...原创 2019-09-16 11:04:57 · 4803 阅读 · 2 评论 -
通过汇编和源码两大神器探究 —— Go语言Slice
Tips:以下代码在go1.12.6 windows/amd64版本下测试分析,版本不同在分析源码的时候略有不同。目录问题产生截取传值还是传指针append扩展--堆内存分配问题产生最近群里有人提了下面一个问题,源码差不多是这样:func f1() { s := []int{1,2,3,4,5} l := len(s) copy(s,s[1:]) ...原创 2019-09-08 17:45:35 · 840 阅读 · 0 评论 -
Go JSON编解码
目录JSON编码JSON解码如果事先不知道JSON数据的结构怎么办?Struct里面的引用类型扩展:Encoders and Decoders JSON编码 函数声明:func Marshal(v interface{}) ([]byte, error)v interface{}:Go语言的数据对象[]byte:返回JSON格式字节数组error:返回编...原创 2019-09-05 16:04:00 · 267 阅读 · 0 评论 -
Go语言学习笔记(持续更新)
这篇Blog主要记录平时学习和使用Go语言所遇到的不清楚和容易搞混淆的知识点。Tips:以下代码在go1.12.6 windows/amd64版本下测试分析,版本不同在分析源码的时候略有不同。目录Go内建函数new和makeruntime.Caller详解Contains方法换行与分号nil channelGo哪些数据类型可以赋值nilGo交叉编译Go逃逸...原创 2019-08-04 16:16:05 · 606 阅读 · 0 评论 -
Go 三个点省略号"..."使用总结
Go语言中省略号"..."有3种用法,下面会一一介绍。Tips:以下测试程序中所涉及地址在不同机器打印也不同。目录使用在数组中打散Slice变长的函数参数使用在数组中q := [...]int{1,2,3}fmt.Printf("%T\n",q) //"[3]int"在数组字面量中,如果省略号"..."出现在数组长度的位置,那么数组的长度由初始化数组的元素个数...原创 2019-08-04 17:39:24 · 7632 阅读 · 0 评论 -
Go 值接收者和指针接收者 区别
首先回顾一下Go语言值类型和指针类型直接调用其值接收者方法和指针接收者方法的区别:先看一个实例:package mainimport "fmt"type I interface { Get() int Set(int)}type S struct { Age int}func(s S) Get()int { return s.Age}func(s *S)...原创 2019-06-22 17:25:48 · 2849 阅读 · 0 评论 -
go get 下载安装beego
准备开始学习beego库,在安装beego源码包遇到一些问题,记录下来以便以后查询。环境:Go版本:go-1.12.6 windows/amd64OS版本:windows 10 家庭版首先了解go get:可以借助代码管理工具(git、svn等)通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装(也可以添加参数让其不安装)。git clone或者pull:拉取代码不会进...原创 2019-06-16 17:14:12 · 1700 阅读 · 0 评论 -
C/C++与Go之间的RPC
目前, rpc框架主要沿着两条路线发展,一个是目标为了跨语言,服务端可以用不同的语言实现,客户端也可以用不同的语言实现,不同的语言实现的客户端和服务器端可以互相调用。很显然,要支持不同的语言,需要基于那种语言实现相同协议的框架,并且协议设计应该也是跨语言的,其中比较典型的是 grpc,基于同一个IDL,可以生成不同语言的代码,并且语言的支持也非常的多。另一个rpc框架发展的目标是支持服务治理,主要...原创 2019-03-09 14:14:51 · 3090 阅读 · 0 评论