
Golang语言
li_101357
热爱技术,踏实勤奋,共创美好未来。。。
展开
-
Go并发编程总结
最近一直在看Go语言的并发编程,主要的书籍是 <Go语言学习笔记>。看完之后,看到网上这篇博客总结的不错,所讲的内容学习笔记上都有。Golang :不要通过共享内存来通信,而应该通过通信来共享内存。这句风靡在Go社区的话,说的就是 goroutine中的 channel。他在go并发编程中充当着类型安全的管道作用。1、通过golang中的 goroutine 与sync.Mutex进行...转载 2018-05-11 17:30:45 · 8152 阅读 · 4 评论 -
go是面向对象语言吗?
转载链接:https://segmentfault.com/a/1190000001832282#articleHeader5原文链接:http://spf13.com/post/is-go-object-oriented前言面向对象的含义引入了对象(object)、类(class)、继承(inheritance)、子类(subclass)、虚方法(virtual method)、协程(corou...转载 2018-05-05 15:02:41 · 19454 阅读 · 1 评论 -
《Go语言编程》---"面向对象编程"
面向对象编程Go 语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,简介之处在于,它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口(interface)串联,浑然一体。类型系统(type system)很少有编程类的书籍谈及类型系统(type...转载 2018-05-05 17:31:13 · 583 阅读 · 0 评论 -
Go语言---sync 包
sync包提供基本的同步原语,如互斥锁。 除了Once和WaitGroup类型之外,大多数类型都是供低级库例程使用的。经过通道和通信可以更好地完成更高级别的同步。互斥锁互斥锁用来保证在任一时刻,只能有一个线程函数访问某对象,保证共享数据的安全性防止竞态。Mutex 的初始值为解锁状态。Mutex 通常作为其它结构体的匿名字段使用,使该结构体具有 Lock 和 Unlock 方法。 Mutex 可...原创 2018-05-11 23:13:34 · 1005 阅读 · 0 评论 -
Go语言---函数返回局部变量地址
一、C语言中返回函数中局部变量值和指针(1) 在C语言中,一个函数可以直接返回函数中定义的局部变量,其实在函数返回后,局部变量是被系统自动回收的,因为局部变量是分配在栈空间,那为什么还可以返回局部变量,其实这里返回的是局部变量的副本(拷贝)。(2) 函数返回局部变量地址:局部变量内存分配在栈空间,因为函数返回后,系统自动回收了函数里定义的局部变量,所以运行时去访问一个被系统回收后的地址空间,一定就...原创 2018-05-05 21:10:52 · 7161 阅读 · 1 评论 -
Go面向对象---音乐库案例
案例目的 演示Go语言面向对象编程特性,设计音乐播放器程序,此程序仅仅只是演示面向对象特性。关键流程:(1) 音乐库功能:使用者可以查看、添加和删除里面的音乐曲目;(2)、播放音乐;(3)、支持MP3和WAV,但也能随时扩展支持更多的音乐类型;(4)、退出程序。 程序主要接受以下命令(1)、音乐库管理命令:lib,包括list/add/remove命令(2)、播放管理:play命令,pl...原创 2018-05-07 14:52:41 · 686 阅读 · 0 评论 -
Go错误处理---errors包以及Go记录日志---log包
Go错误处理---errors包1、error接口Go语言引入了一个关于错误处理的标准模式,即error接口,该接口定义:type error interface { Error() string } 对于大多数函数,如果要返回错误,大致可以定义为如下模式,将error作为多种返回值中的最后一个,但这并非是强制要求:func Foo(param int)(n int, err err...转载 2018-05-07 18:10:20 · 11322 阅读 · 0 评论 -
Golang string和[]byte的对比
转载网址:https://www.cnblogs.com/zhangboyu/p/7623712.html为啥string和[]byte类型转换需要一定的代价?为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) int?string和[]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高(动态字符串拼接性能对比)?今天看了源码探...转载 2018-05-08 15:41:56 · 10763 阅读 · 0 评论 -
go---详解container/heap
目录container/heap是什么container/heap提供的方法container/heap的源码container/heap用途1. int slice类型的小根堆2. 实现优先级队列(重要:k8s优先级队列)3. 处理最小的K个数或者最大的K个数,处理海量数据container/heap是什么堆(英语:heap)是计算机科学中一类特殊的数据结构的...原创 2019-05-11 17:23:45 · 2809 阅读 · 0 评论 -
go new和make的区别
Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。简单来说,new只分配内存,make用于slice,map,和channel的初始化。 内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。内置函数make对引用类型进行创建,编译器会将make转换为目标类型专用的创建函数,以确保完成全部内存分配和相关属性初...转载 2018-05-04 21:16:14 · 7422 阅读 · 0 评论 -
Go语言中的值类型和引用类型
一、值类型和引用类型值类型:int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。可以通过 &i 获取变量 i 的内存地址。 值拷贝引用类型:特指slice、map、channel这三种预定义类型。引用类型拥...原创 2018-05-04 20:50:10 · 7529 阅读 · 2 评论 -
GO环境搭建及goland IDE安装
GO环境搭建:参考博客注意的点:1、三个环境变量的配置。GOROOT:Go 安装后的根目录(例如:D:\Program Files\Go),安装过程中会由安装程序自动写入系统环境变量中。go语言自带的类库。GOBIN:Go 的二进制文件存放目录(%GOPATH%\bin),这里注意。否则后面go install 不会成功PATH:需要将 %GOBIN% 加在 PATH 变量的最后,方便在命令行下运...转载 2018-02-03 22:09:10 · 17897 阅读 · 0 评论 -
Go语言中判断类型
今天学到结构体的时候,突然想起怎么判断变量类型? 转载地址:http://blog.sina.com.cn/s/blog_487109d101013g2p.html------------------------------------------------------------------------------------今天群里有人问:在Go中怎样判断数据类型。1、要判断数据类型,可以用...转载 2018-04-12 16:25:25 · 20084 阅读 · 0 评论 -
Go语言---strings包(字符串操作)
strings标准库包主要涉及字符串的基本操作。常见字符串的操作有:字符串求长度求子串是否存在某个字符或者子串子串出现的次数(字符串匹配)字符串分割(切分)成[]string字符串是否存在某个前缀或后缀字符或者子串在字符串中首次出现的位置或最后一次出现的位置通过某个字符串将[]string进行拼接字符串重复次数字符串中子串替换大小写转换......................等等一些基本操作。...转载 2018-05-08 21:57:58 · 40292 阅读 · 1 评论 -
Go语言---bytes包
该包定义了一些操作 byte slice 的便利操作。因为字符串可以表示为 []byte,因此,bytes 包定义的函数、方法等和 strings 包很类似,所以讲解时会和 strings 包类似甚至可以直接参考。 []byte 为 字节切片,byte---uint8类型。官方网址对这个包都有详细的示例,有助于更好地理解和使用。-----------------------------------...转载 2018-05-09 11:24:37 · 9788 阅读 · 0 评论 -
Go语言---strconv包
包strconv主要实现对字符串和基本数据类型之间的转换。基本数据类型包括:布尔、整型(包括有/无符号、二进制、八进制、十进制和十六进制)和浮点型等。------------------------------------------------------------------------------------------------------------strconv 包转换错误处理字符...原创 2018-05-09 20:28:16 · 21996 阅读 · 0 评论 -
Go语言 — Unicode码点包
unicode介绍Unicode只是定义了一个字符和一个编码的映射,但是呢,对应的存储却没有制定。 比如一个编码0x0041代表大写字母A,那么可能有一种存储至少有4个字节,那可能0x00000041来存储代表A。 这个就是unicode的具体实现。unicode的具体实现有很多种,UTF-8和UTF-16就是其中两种。UTF-8表示最少用一个字节就能表示一个字符的编码实现。它采取的方式是对不同的...转载 2018-05-09 23:00:28 · 5472 阅读 · 0 评论 -
Go语言---fmt包
占位符普通占位符占位符 说明 举例 输出%v 相应值的默认格式。 Printf("%v", site),Printf("%+v", site) {...原创 2018-05-10 15:38:22 · 3502 阅读 · 0 评论 -
Go语言---unicode/utf8 unicode/utf16包
unicode/utf8包utf8实现了函数和常量来支持UTF-8编码的文本。它包括在runes和UTF-8字节序列之间转换的函数。utf8里面的函数就有一些字节和字符的转换。//判断是否符合UTF编码的函数// Valid 判断 p 是否为完整有效的 UTF8 编码序列。func Valid(p []byte) bool// ValidRune 判断 r 能否被正确的转换为 UTF8 编码...原创 2018-05-10 11:22:10 · 6622 阅读 · 0 评论 -
golang-闭包实例详解
一、闭包的概念闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。或者说是函数和其引用环境的组合体。闭包的概念可以直接百度或者google详细搜索详细,这里主要是通过几个实例来对闭包进行详解。二、闭包实例详解实例1//函数片段func add(base int) func(int) int { fmt.Printf("%p\n", &bas...原创 2018-05-04 19:23:21 · 13945 阅读 · 1 评论 -
为什么我全力推荐Golang
转载地址:https://zhuanlan.zhihu.com/p/19959647 如果有侵权行为,请告知立马删除,谢谢!讨论哪个语言更好,就像在争论姚明和刘翔谁是更优秀的运动员。因为各自的坐标象限不同,常常会陷入一个难有结论怪圈。所以本文绝不是在说Golang是比其他语言更好的语言。Golang只是最值得推荐的语言,尤其适合快速成长中的后端研发团队。我推荐Gol转载 2017-11-01 14:12:55 · 888 阅读 · 0 评论