![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
程序猿编码
嘿,编译通过了!
展开
-
cgo快速入门之golang调用C语言
前言cgo 提供了 golang 和 C 语言相互调用的机制。几乎所有的编程语言都有C语言的影子,当然golang也不例外。可以看到golang的创始者们与C语言有着密切的联系。下面我们将通过快速入门小例子来掌握cgo的基本用法。最简cgo程序真实的cgo程序一般都比较复杂。不过我们可以通过一个小例子,了解一个最简的cgo程序该是什么样的。构造一个最简cgo程序,首先要忽视一些复杂的cgo...原创 2020-03-24 17:27:43 · 1223 阅读 · 0 评论 -
超赞的 Go 语言 INI 文件操作
前言INI 是 Windows 上常用的配置文件格式。如果你使用 INI 作为系统的配置文件,那么一定会使用这个库吧。它就是号称地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库。配置文件形式为[section] 的段构成, 内部使用 name=value键值对 。go-ini是 Go 语言中用于操作 ini 文件的第三方库。本文介绍go-ini库的使用。INI官方该项目的...原创 2020-03-23 10:52:07 · 4169 阅读 · 0 评论 -
Golang之defer 延迟调用
前言defer语句被用于预定对一个函数的调用。我们把这类被defer语句调用的函数称为延迟函数。而defer 延迟语句在其他编程语言里好像没有见到。应该是属于 Go 语言里的独有的关键字。但用法类似于面向对象编程语言 Java 和 C# 的 finally 语句块。下面对defer进行介绍。defer特性1. 关键字 defer 用于注册延迟调用。2. 这些调用直到 return 前才被执...原创 2020-03-22 11:03:21 · 422 阅读 · 0 评论 -
Golang的反射reflect讲解与示例
前言reflect是 Golang的一个标准库,Golang语言实现了反射机制就是在运行时动态的调用对象的方法和属性。reflect源码结构每当研究一个标准库的时候,都很喜欢先看看源码结构。而Golang reflect 反射的源码位于 golang/go/src/reflect中。reflect目录包含以下文件:在reflect源码中.s 是一些 golang 汇编文件。最主要的两位...原创 2020-03-17 21:18:03 · 1705 阅读 · 0 评论 -
Go语言log日志包详解及使用
前言在计算机世界里,日志文件记录了发生在操作系统或其他软件运行时的事件或状态。技术人员可以通过日志记录进而判断系统的运行状态,寻找导致系统出错、崩溃的成因等。这是我们分析程序问题常用的手段。在研究log日志文件之前,先来看看日志是什么。Centos 7系统里/var/log/var目录是所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQ...原创 2020-03-03 14:43:01 · 4875 阅读 · 0 评论 -
Go语言面试题汇总
正在准备golang面试的小伙伴,很荣幸,你能看到这篇文章,希望每一个看到这篇分享的小伙伴都能找到自己称心如意的工作!1、说说go语言的main函数(1)、main函数不能带参数。(2)、main函数不能定义返回值。(3)、main函数所在的包必须为main包。(4)、main函数中可以使用flag包来获取和解析命令行参数。2、在go语言中,new和make的区别?new函数是内建函...原创 2020-03-02 16:52:49 · 19847 阅读 · 1 评论 -
Go语言sync.Pool(临时对象池)
Golang在sync里面提供了对象池Pool。一般大家都叫这个为对象池。众所周知,go是自动垃圾回收的,这大大减少了程序编程负担。但gc是一把双刃剑。比如对刚刚上手的程序员是友好的,但是后期随着项目变得越来越巨大,维护的内存问题也会逐渐暴露出来。sync.Pool是一个可以存或取的临时对象池。对外提供New、Get、Put等API。本文对sync.Pool进行分析。Pool设计的目的是什么?...原创 2020-03-02 09:33:02 · 614 阅读 · 0 评论 -
Golang 内存分配之逃逸分析
前言在C/C++开发中,动态分配内存(new/malloc)需要我们手动释放资源。这样做的好处是,需要申请多少内存空间可以很好的掌握怎么分配。但是这有个缺点,如果忘记释放内存,则会导致内存泄漏。在很多高级语言中(python/Go/java)都加上了垃圾回收机制。golang 的内存分配之堆和栈Go的垃圾回收,让堆和栈堆程序员保持透明。真正解放了程序员的双手,让他们可以专注于业务,“高效”地...原创 2020-02-17 10:37:56 · 907 阅读 · 0 评论 -
Golang处理JSON(二) 反序列化
在Go语言中,encoding/json标准包处理json数据的序列化与反序列化问题。如果想了解序列化可以看这一篇序列化。与编码json的Marshal类似,解析json也提供了Unmarshal方法。对于解析json,也大致分两步,首先定义结构,然后调用Unmarshal方法序列化。反序列化 Unmarshal()反序列化源码放在:Unmarshal// Unmarshal parse...原创 2020-02-15 23:25:41 · 2412 阅读 · 0 评论 -
Go单元测试-testing
在开发程序中,很重要一点就是测试,测试可以保证代码的质量,保证每个函数可以正常运行。但是如何保证写出来的程序是否正确。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。testing - 单元测试Go语言自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试(T类型)和性能测试(B类型)。testing框架和其他语言中的测试框架...原创 2020-02-15 12:17:50 · 1274 阅读 · 0 评论 -
Golang处理JSON(一) 序列化
前言JSON 是目前最为流行的序列化手段,Go语言对于这些标准格式的编码和解码都有良好的支持,在Go语言中,encoding/json标准包处理json数据的序列化与反序列化问题。下面主要讲解序列化。什么是序列化序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。通过从存储区中读取对象的状态,重新创建该对象,则为反序列化。各种类...原创 2020-02-13 12:44:16 · 2717 阅读 · 0 评论 -
Go语言 结构体struct的使用
golang中是没有class的,但是有一个结构体struct。结构体是用户定义的类型,是一种聚合的数据类型,由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。Go语言的struct,与C语言中的struct或C++语言中的类(class)类似。可以定义字段(属性)和方法。结构体的声明type Employee struct{ firstName string lastNa...原创 2020-02-10 18:01:17 · 2209 阅读 · 0 评论 -
Go语言一一内置函数(包含所有)
Go语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。go1.13.7 版本下载地址:https://golang.org/dl/源文件builtin.go文件中一共定义了15个内置函数。下面来看看builtin.go文件// Copyr...原创 2020-02-08 17:15:24 · 2816 阅读 · 0 评论 -
学习Go语言的十大在线资源
Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。Go语言是增长最快的一门编程语言。尽管该语言具有易于学习的语法,但是如果你刚学习编程,那么找到适合的学习资源可能会很棘手。下面开始介绍一些在线资源网站。1、Go by ExampleGo by ...原创 2020-02-05 15:02:26 · 2441 阅读 · 0 评论 -
Go 语言类型转换
前言Go语言是一种静态类型的编译型语言,每一个变量在使用时都有明确的类型与之对应。Go语言中,关于数据类型,主要是类型转换、类型断言和类型选择,下面以类型转换为主讲解。类型转换由于 Go语言是强类型的语言,如果不满足自动转换的条件,则必须进行强制类型转换。任意两个不相干的类型如果进行强制转换,则必须符合一下的规则。强制类型的语法格式:var a T = T (b)T表示为数据类型a...原创 2020-02-03 10:06:32 · 377 阅读 · 0 评论 -
Go 程序的基本结构和要素
Go的源文件以 .go为后缀名存储在计算机中,这些文件名均由小写字母组成,如helloworld.go.如果文件名由多个部分组成,则使用下划线_ 对它们进行分割,helloworld_test.go。文件名不包含空格或其他特殊字符。package mainimport "fmt"func main() { fmt.Println("hello, world")}输出结果:在编...原创 2020-01-16 22:19:06 · 392 阅读 · 0 评论