-
golang map 用range遍历不能保证顺序输出
所属栏目:[大数据] 日期:2020-12-16 热度:161
按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机到什么程度还不清楚。 package mainimport ("fmt")f[详细]
-
关于golang中的引用类型(reference type)
所属栏目:[大数据] 日期:2020-12-16 热度:61
map,指针( pointers),还有slice,按照我的理解,这样的一个变量,存的就是个内存地址,而这样的一个声明 var a map[int]string var p *int var arr []string 在没有初始化之前都是nil,对这样的一个变量进行写(write)操作,都会抛出一个运行异常( a r[详细]
-
基于golang的数据结构源码说明
所属栏目:[大数据] 日期:2020-12-16 热度:116
Golang 是一门灵活的,类 C 的编程语言,没有那么多的原生封装,比较纯粹底层,个人觉得很适合写算法,这里有一些常见的数据结构、算法的代码实现和中文注释,代码里面有部门地方会引用下golang的语言特性,作为一个有追求的程序狗,喜欢就fork了一起来完善[详细]
-
Golang Array 数组 和 Slice 切片
所属栏目:[大数据] 日期:2020-12-16 热度:87
一 数组简介 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内[详细]
-
Go语言gdb调试打印全局变量
所属栏目:[大数据] 日期:2020-12-16 热度:105
Golang GDB print global variable 在使用GDB工具调试golang程序时,需要print一个全局变量,遇到各种报错,没办法打印出来,这里记录一下解决方法。 我的包名叫“sec”,全局变量名叫“G_sec”,代码中使用时为“sec.G_sec” 1. 程序中使用全局变量为“包名[详细]
-
GoLang strings包函数用法
所属栏目:[大数据] 日期:2020-12-16 热度:132
package main import ( "fmt""strings"//"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中")fmt.Println(" Contains 函数的用法")fmt.Println(strings.Contains("seafood","foo")) //truefmt.Println(strings.Contains("seafood",[详细]
-
如何压缩Golang 编译出的可执行文件大小
所属栏目:[大数据] 日期:2020-12-16 热度:61
先给结论:可以减少到原来的29% 最近在写一个TLScat小工具Github.com/mengzhuo/tlscat源文件仅仅2KB不到,但是用 go build tlscat.go 编译出来的有4.6MB! 后来发现这个 Golang 的1.5才会解决的问题Issue #6853 all: binaries too big and growing可是,我[详细]
-
创建超小的golang应用Docker镜像
所属栏目:[大数据] 日期:2020-12-16 热度:143
重点: 需要静态链接编译golang程序。 CGO_ENABLED= 0 GOOS=linux go build -a -installsuffix cgo -o main . 参考: http://www.tuicool.com/articles/a6VFVr[详细]
-
golang json数组拼接
所属栏目:[大数据] 日期:2020-12-16 热度:82
func main() { a := [] byte ( `{"Parents": [ "aaaaa","bbbbbbb" ]}` ) b := [] byte ( `{"Parents": [ "Gomez","Moticia" ]}` ) var arr [] interface {} js,_ := simplejson.NewJson(a) nodes,_ := js.Map() p := nodes[ "Parents" ] d := p.([] interfac[详细]
-
Golang 小技巧
所属栏目:[大数据] 日期:2020-12-16 热度:112
1.前言 Golang 开发过程中的一些小技巧在这里记录下。 2.内容 1)包的引用 经常看到Golang代码中出现 _ "controller/home" 类似这种的引用,这里的下划线有什么作用呢? 其实默认每个文件都有一个init函数,加下划线表示引入这个包,仅执行init函数, 别的函[详细]
-
golang函数传参方式总结
所属栏目:[大数据] 日期:2020-12-16 热度:122
先上结论 golang的所有内置类型作为函数参数传递都是传值的方式(没有传递引用一说),需要注意的是:数组、slice和map作为函数参数时也是传值,但是如果对 结构内元素 进行的修改,修改的是原数据。如果是对其进行整体赋值,则不会修改原数据,相当于拷贝出[详细]
-
关于golang中map的key的类型
所属栏目:[大数据] 日期:2020-12-16 热度:78
golang中的map,的 key 可以是很多种类型,比如 bool,数字,string,指针,channel,还有 只包含前面几个类型的 interface types,structs,arrays 显然,slice, map 还有 function 是不可以了,因为这几个没法用 == 来判断 原文如下: As mentioned earlier,map[详细]
-
go-可变参数
所属栏目:[大数据] 日期:2020-12-16 热度:186
今天在尝试用go写一个简单的orm的时候 发现 在调用可变参数函数时,不是总能使用省略号将一个切片展开,有时候编译器可能会报错 再此用几个简单的例子作为说明 当不太确定数据类型的时候我们通常采用空接口 tests1(789)fmt.Println("-------------")tests1("[详细]
-
n*log(3)n排序算法
所属栏目:[大数据] 日期:2020-12-16 热度:149
老规矩,上来先表示对原作者的敬重之心:n*log(3)n排序算法 -- 修江的芦苇 关于三叉堆排序呢,对于已经理解了二叉堆排序的人来说,其实很容易理解。该讲的在原作里面,作者已经讲的很清楚了,这里就只贴一下代码了。 首先是 heap.go: package heap // import[详细]
-
go学习【一】介绍
所属栏目:[大数据] 日期:2020-12-16 热度:181
写Go学习的主要目的是为了对自己学习Go的知识作一次系统性的梳理 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是[详细]
-
Golang使用pkg-config自动获取头文件和链接库的方法
所属栏目:[大数据] 日期:2020-12-16 热度:193
为了能够重用已有的C语言库,我们在使用Golang开发项目或系统的时候难免会遇到Go和C语言混合编程,这时很多人都会选择使用cgo。 话说cgo这个东西可算得上是让人又爱又恨,好处在于它可以让你快速重用已有的C语言库,无需再用Golang重造一遍轮子,而坏处就在[详细]
-
golang 图片处理,剪切,base64数据转换,文件存储
所属栏目:[大数据] 日期:2020-12-16 热度:173
本文主要介绍: 1. 图片文件的读写。 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 - file ddd , _ := base64 .StdEncoding . DecodeString (datasource ) //成图片文件并把文件写入到buffer err2 :=[详细]
-
golang C相互调用带参数
所属栏目:[大数据] 日期:2020-12-16 热度:115
test.h #ifndef __TEST_H__ #define __TEST_H__ void SetFunc( char * str); extern void InternalFunc( char * str); #endif test.c #include " test.h " void SetFunc( char * str) { InternalFunc(str); } test.go package main // #include "test.h" imp[详细]
-
golang append
所属栏目:[大数据] 日期:2020-12-16 热度:154
1) Append a slice b to an existing slice a: a = append(a,b...) 2) Copy a slice a to a new slice b: b = make([]T,len(a)) copy(b,a) 3) Delete item at index i: a = append(a[:i],a[i+1:]...) 4) Cut from index i till j out of slice a: a = append[详细]
-
golang ide 升级
所属栏目:[大数据] 日期:2020-12-16 热度:124
1、把Sublime自带的packageGo.sublime-package文件改后缀为zip,解压,删除snippet文件,再压缩后替换后文件 2、安装好Vscode及Go插件后,查找go.json 文件(可能位置C:UsersAdministrator.vscodeextensions),把里边设置的提示用到DataPackagesGoS[详细]
-
Golang、PHP、Java、C#、ObjectC互通DES加密与解密
所属栏目:[大数据] 日期:2020-12-16 热度:168
在完成一个大项目时候,我们要用到多语言来开发接口,每个模块可能分配到各小组中,各小组成员用到语言往往不一样,在向接口传递参数的时候,就要用到加密与解密。 在网上找了一些,这篇文章中有通用的写法,《PHP、JAVA、C#、Object-C 通用的DES加密》。 我[详细]
-
GO Lang安装
所属栏目:[大数据] 日期:2020-12-16 热度:175
安装 为了构建 Go 1.x (x ≥ 5),需要先安装 Go 1.4 到 $GOROOT_BOOTSTRAP . 默认的 $GOROOT_BOOTSTRAP 是 $HOME/go1.4 . 我们使用 Go 1.4 作为启动的基础版本来编译工具链。 先安装go1.4,再安装go1.6.2或者其他版本。 预置go1.4 下载 go1.4.linux-amd64.[详细]
-
Golang 中的“潜规则”
所属栏目:[大数据] 日期:2020-12-16 热度:192
GO语言中要提供给外面访问的方法或是结构体必须是首字母大写 在一个公共的头文件中定义了一个结构体,如下所示: type Header struct { ver int magic_num int len int} 在另一个执行文件中,进行了初始化和赋值: var head comm.Header; head.ver = 1 head.[详细]
-
CGO,GOLANG调用C库,调用代码、静态库或动态库
所属栏目:[大数据] 日期:2020-12-16 热度:134
CGO CGO可以让golang和c互相调用,譬如x264或者aac编解码,用go再实现一遍比较麻烦,直接调用c的函数会更合适。 CGO可以直接用C的代码,或者C的静态库,或者动态库,当然C++也是可以的。 写了一个fdkaac的binding:https://github.com/winlinvip/go-fdkaac[详细]
-
论golang的文档即代码
所属栏目:[大数据] 日期:2020-12-16 热度:126
GO TEST 如果提供一个库,或者提供了一个模块,如何给使用者描述这个API的用法?一般都是给文档,但是文档非常容易不同步,在golang中,有更高级的做法,也是最好的做法。 以 go-fdkaac 为例,这个是一个go binding,调用了lib-fdkaac的c函数,提供aac的code[详细]
