-
在 Golang 中使用 Protobuf
所属栏目:[大数据] 日期:2020-12-16 热度:136
安装 goprotobuf 1. 从 https://github.com/google/protobuf/releases 获取 Protobuf 编译器 protoc (可下载到 Windows 下的二进制版本 wgethttps://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gztarzxvfprotobuf-2.6.1.tar.[详细]
-
golang返回值为interface{}的类型判断
所属栏目:[大数据] 日期:2020-12-16 热度:180
看标题就知道,这是一个很简单的问题,就一个函数的事,但是,今天一同学golang的几个人中,已经不止一个人问我了,在这里我就说一下,也希望对不清楚的娃有些许帮助,大神别喷,飘过就行了。 大家知道,golang对于不确定返回值可以用interface{}代替,这确[详细]
-
Golang同步:原子操作使用
所属栏目:[大数据] 日期:2020-12-16 热度:167
原子操作即是进行过程中不能被中断的操作。针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的针对该值的操作。 为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。 GO语言提供的原子操作都是非入侵式的,由标准库sync/atomic[详细]
-
golang expected declaration, found 'IDENT'
所属栏目:[大数据] 日期:2020-12-16 热度:106
这个问题是因为 := 只能在函数内部使用,如果声明全局变量需要使用 var 关键字 例如 func foo () { id : = 1 } 如果声明为全局变量则需要这样声明 var id = 1 PS:Go中引入 := 是为了减少一些临时变量的定义,所以一个好的习惯是 := 只用来声明临时变量,对[详细]
-
Golang同步:条件变量和锁组合使用
所属栏目:[大数据] 日期:2020-12-16 热度:172
条件变量的作用并不是保证在同一时刻仅有一个线程访问某一个共享数据,而是在对应的共享数据的状态发生变化时,通知其他因此而被阻塞的线程。 条件变量与互斥量组合使用 互斥量为共享数据的访问提供互斥支持 条件变量就状态的变化向相关线程发出通知 三种操[详细]
-
Golang同步:锁的使用案例详解
所属栏目:[大数据] 日期:2020-12-16 热度:137
互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法 Lock Unlock 类型sync.Mutex的零值表示了未被锁定的互斥量。 var mutex sync.Mutexmutex.Lock() 示例 // test for Go // /[详细]
-
Golang同步:锁的使用案例详解
所属栏目:[大数据] 日期:2020-12-16 热度:75
互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法 Lock Unlock 类型sync.Mutex的零值表示了未被锁定的互斥量。 var mutex sync.Mutexmutex.Lock() 示例 // test for Go // /[详细]
-
golang判断key是否在map中
所属栏目:[大数据] 日期:2020-12-16 热度:81
判断方法示例代码 if _,ok := map[key]; ok {//存在} 另外golang也没有提供item是否在array当中的判断方法,如果程序里面频繁用到了这种判断,可以将array转化为以array当中的成员为key的map再用上面的方法进行判断,这样会提高判断的效率.[详细]
-
golang比较方便的地方
所属栏目:[大数据] 日期:2020-12-16 热度:50
golang比较方便的地方 GO在自定义类型,数组,变量覆盖,函数变量等方面比较方便。 IsXXX GO中很方便在基本类型上定义新的类型,这个虽然是个小东西,但是有时候非常好用。 经常需要定义这样的函数,譬如RTMP的消息 IsAudio , IsVideo 等等。如果是C++就需[详细]
-
unsafe 库使用小结
所属栏目:[大数据] 日期:2020-12-16 热度:165
unsafe 库让 golang 可以像 C 语言一样操作计算机内存,但这并不是 golang 推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。 unsafe 包的内[详细]
-
sync 库使用小结
所属栏目:[大数据] 日期:2020-12-16 热度:160
sync 主要用于 golang 中共享资源访问的同步控制。虽然 golang 更推荐 chan 这种通过通信来共享资源的方式,但有时候直接使用 sync 的效果更好,它是 chan 方式的很好的补充。本文对 sync 的使用进行一些简单介绍。 互斥锁 func TestMutex() { var mutex syn[详细]
-
Golang 闭包
所属栏目:[大数据] 日期:2020-12-16 热度:176
很多编程语言都闭包的概念,最常见闭包使用的应该是 javascript 了。其实闭包不是什么新奇的概念,就是函数与函数特定环境的组合,闭包使用了本函数之外定义的变量。Golang 中也有所谓的闭包,本文对Golang中的闭包的概念中的关键点通过实际示例进行个简单的[详细]
-
golang不定参数
所属栏目:[大数据] 日期:2020-12-16 热度:158
1.有时候想一个函数中传入的参数很可能是不定的,除了可以使用: func funcname (.. .interface { } ) { } 2.也可以将许多参数放进一个数组中,然后作为参数传入函数(或许会觉得这样有点多此一举,但是很可能存在历史遗留问题): func funcname(args [] int[详细]
-
坑爹的golang日期时间格式format()
所属栏目:[大数据] 日期:2020-12-16 热度:164
今天重拾golang,用到了format()函数格式化字符串,用了语句time.now().format(“2015-11-12 12:00:00”),结果输出结果就是不能达到理想的结果,然后把golang文档中的”2006-01-02 15:04:05“放进去就可以了,搞了好久没搞明白怎么回事,随意百度了一下,原[详细]
-
golang取两个数字之间的随机数
所属栏目:[大数据] 日期:2020-12-16 热度:159
golang取两个数字之间的随机数(推荐方法一) 方法一 package mainimport ( "math/rand" "fmt")func main(){ for i := 0; i 20; i++ { num:=RandInt64(1500,2000) fmt.Println(num) }}func RandInt64(min,max int64) int64 {if min = max || min==0 || max==[详细]
-
说说Golang的使用心得
所属栏目:[大数据] 日期:2020-12-16 热度:188
文章来源:http://www.jb51.cc/article/p-czfznqve-bnx.html 13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直有想法[详细]
-
golang安装
所属栏目:[大数据] 日期:2020-12-16 热度:138
安装环境Cent OS 6.5 64位 1、安装mercurial包 yum install mercurial 2、 安装git包 yum install git 3、 安装gcc yum install gcc 4、 然后就可以下载golang的压缩包了 wget https://go.googlecode.com/files/go1.5rc1.linux-amd64.tar.gz(如果可以访问直[详细]
-
Golang time包的定时器/断续器
所属栏目:[大数据] 日期:2020-12-16 热度:114
定时器 在time包中有两个函数可以帮助我们初始化time.Timer time.Newtimer函数 初始化一个到期时间据此时的间隔为3小时30分的定时器 t := time.Newtimer (3 *time.Hour + 30 *time.Minute) 注意,这里的变量t是*time.NewTimer类型的,这个指针类型的方法集合[详细]
-
Golang的select/非缓冲的Channel实例详解
所属栏目:[大数据] 日期:2020-12-16 热度:167
select golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行【立即执行:意思是当前Goroutine不会因此操作而被阻塞,还需要依据通道[详细]
-
golang实现类似Scan或者Scanf功能
所属栏目:[大数据] 日期:2020-12-16 热度:92
fmt.Scan或者fmt.Scanf可以从标准输入中读取数据,也可以自己实现一个类似的功能 packagemainimport(_"errors""fmt""io""os""syscall""time""bytes"_"os/exec""github.com/docker/docker/pkg/term")funcmain(){Stdin()}funcStdin(){varinio.Readerin=os.NewF[详细]
-
golang学习笔记
所属栏目:[大数据] 日期:2020-12-16 热度:88
在本地浏览器查看文档 cmd中输入godoc -http=:8080 然后访问浏览器的localhost:8080[详细]
-
golang中结构体的初始化方法(new方法)
所属栏目:[大数据] 日期:2020-12-16 热度:105
自定义一个结构体 type Rect struct { x,y float64 width,height float64 } 初始化方法: rect1 := new(Rect) rect2 := Rect{} rect3 := Rect{0,100,200} rect4 := Rect{width:100,height:200} 注意这几个变量全部为指向Rect结构的指针(指针变量),因为使用[详细]
-
golang 获取exe、dll、apk 版本号
所属栏目:[大数据] 日期:2020-12-16 热度:111
通过go获取exe、dll、apk版本号,支持夸平台,可交叉编译。 一点都不爽,修改一个格式还要审核一下,浪费心情。 // golang 实现读取exe dll apk 版本号package mainimport ( "flag" "fmt" "log" "os" "path/filepath")import ( "github.com/lunny/axmlParser[详细]
-
Golang的安装
所属栏目:[大数据] 日期:2020-12-16 热度:114
Golang的安装 Golang简介 Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。 罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊于2007年9月开始设计Go语言,稍后Ian Lance Taylor,Russ Cox加入项目中。Go语[详细]
-
在 Golang 中使用 Protobuf
所属栏目:[大数据] 日期:2020-12-16 热度:118
安装 goprotobuf 1. 从 https://github.com/google/protobuf/releases 获取 Protobuf 编译器 protoc (可下载到 Windows 下的二进制版本 wgethttps://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gztarzxvfprotobuf-2.6.1.tar.[详细]
