Go语言中文网 为您找到相关结果 1144

Go和C如何共享内存资源

Go语言作为一个现代化的编程语言以及支持垃圾内存的自动回收特性(GC). 我们现在关注的是C语言返回的内存资源的自动回收技术. CGO初步 Go语言的cgo技术允许在Go代码中方便的使用C语言代码. 基本的用法如下: package rand /* #include */ import "C" func Random() int { return int(C.random()) } func Seed(i int) { C.srandom(C.uint(i)) } 其中"C"是导入一个虚拟的包, 用于引用C语言的符号. Go语言和C语言通讯交互主要是通过传递参数和返回值. 其中参数和返回值除了基本的 数据类型外, 最重要的是如何相互传递/共享二进制的内存块. Go向C语...阅读全文

博文 2015-05-18 12:37:48 chai2010

go cgo 用法 ,新手容易遇见的第三方的C语言库的 库文件或头文件找不到的情况

我遇到的情况是 在windows平台下mingw 编译使用第三方的 C语言库,我需要给mingw设置 环境变量 指示mingw 的 gcc命令编译时 寻找头文件和 库文件的目录 而cgo似乎是 不关心 或者 不认 我给mingw设置的环境变量 需要自己设置 头文件 和 库文件的地址 比如 cgo参数的使用 //#cgo CFLAGS: -I../../cinclude //#cgo LDFLAGS: -L../../clib -lgsasl //#include ...... CFLAGS 上边指示了头文件地址 LDFLAGS 下边的表明了库文件地址 都是当前文件的相对位置 -I (大写)指示了头文件目录 -L 指示了库文件目录 -l(L小写)指示所用的具体的某个库文件 ...阅读全文

博文 2015-06-17 23:03:20 suncaishen

go的Type switch是一个switch语句么?

相信这样的语句在go中大家见的很多 switch t := arg.(type) { default: fmt.Printf("unexpected type %T\n", t) // %T prints whatever type t has case bool: fmt.Printf("boolean %t\n", t) // t has type bool case int: fmt.Printf("integer %d\n", t) // t has type int case *bool: fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool case *int: fmt.Printf("pointer to i...阅读全文

博文 2015-12-15 21:00:07 baizx

在windows/linux下搭建go开发环境

本篇博客主要是介绍在 windows 下搭建 go 开发环境,因为 linux 下相对 windows 甚至更方便一些 (really?);如果你是关心的是 linux 的安装,直接跳到 linux 下安装 go 吧。废话不多说,去 go 的官网,下载 go 的 windows 版本。有 zip 文件下载,直接解压缩使用,不用选择 msi 安装。或是你直接到 golang:windows下安装go。 说点废话。me 为嘛选择 zip 而不是 msi 呢?相对来说,me 更喜欢绿色软件,解压之后基本就可以使用了,不过有个缺点就是,us 需要自己注册环境变量(相信对于程序猿来说介太 easy 了)。msi/exe 的工作之一就是解压缩,另一些就是自动添加某些环境变量,还可能就是往注册表中写入一些...阅读全文

博文 2014-10-24 11:38:51 陆仁贾

go语言版ssh口令破解工具

## 使用说明: ![](/static/upload/201504050545178.jpg) 1. iplist的格式为ip:port,如111.111.111.111:22 2. user.txt为用户名字典 3. password.txt为密码字典 4. github:https://github.com/netxfly/crack_ssh/blob/master/scan_ssh.go ## 源码: ``` package main import ( "bufio" "bytes" "fmt" "github.com/btcsuite/golangcrypto/ssh" "log" "os" "runtime" "strings" "time" ) type HostInfo st...阅读全文

博文 2015-04-10 22:31:30 Netxfly

Go语言实现位图排序(bitmap)

Go语言提供了byte类型,一个byte对应8个位,所以转换一下就可以实现位图了。 代码: package main //author:xcl //date:2014-1-25 import ( "fmt" ) func main() { arrInt32 := [...]uint32{5, 4, 2, 1, 3, 17, 13} var arrMax uint32 = 20 bit := NewBitmap(arrMax) for _, v := range arrInt32 { bit.Set(v) } fmt.Println("排序后:") for i := uint32(0); i < arrMax; i++ { if k := bit.Test(i); k == 1 { fmt.P...阅读全文

博文 2015-06-17 23:01:27 xcltapestry

go与python

python是最简洁的语言,没有之一。目前有很多go程序员都是python程序员,因此,对go的评价有一句很典型的话:go写起来像python一样。 用了go一段时间,感受如下: 1、写起来像python一样,但距离python还是有段距离的。尤其是,python提供了idle命令行解释器,这个可以很方便的写一些小例子来验证一些函数如何使用,go这方面就不如。 2、go语言的静态属性导致go不可能像python一样简洁,这如同硬币的两面; 3、go语言语法非常严格,在编译的时候,能够预防很多错误; 4、go语言执行效率远远高于python。这一点很重要。有些pythoner不服,总是说,想要效率的话,你可以pypy啊,你可以使用c扩展啊,等等,但是问题是,如果使用了pypy,或者使用c扩展的...阅读全文

博文 2015-10-14 15:02:42 铁哥

go web 编程

最近,在网上出现了一本名为《Go Web编程》的书籍,里面详细地讲述了使用Go语言进行Web编程的各个方面。很特别的是,这本书是在GitHub上以开源的方式撰写的。日前,InfoQ采访了这本书的作者谢孟军先生,请他来和大家谈谈Go语言以及他撰写的开源书籍。 InfoQ:请您先简单和大家介绍一下自己。 谢孟军:大家好,我叫谢孟军,可以叫我Asta,目前就职于盛大云,负责盛大云分发产品的研发。云分发就是我们平常所谓的CDN系统。 InfoQ:是什么原因促使您撰写《Go Web编程》这本书呢? 谢孟军:我以前主要从事PHP、Python等Web方面的开发,后来到了盛大云之后接触比较多C++等底层的东西,就想学习一下这些底层的技术。再后来看到许式伟的博客,了解到Go语言。Go出自B语言的作者和Uni...阅读全文

博文 2014-10-04 19:26:48 descusr

服务器框架zinx-基于Golang的轻量级TCP并发服务器框架

# Zinx [![License](https://img.shields.io/badge/License-GPL%203.0-blue.svg)](LICENSE) [![Gitter](https://img.shields.io/badge/在线交流-Gitter-green.svg)](https://gitter.im/zinx_go/community) [![zinx详细教程](https://img.shields.io/badge/zinx详细教程-简书-red.svg)](https://www.jianshu.com/p/23d07c0a28e5) [![zinx原创书籍下载](https://img.shields.io/badge/原创书籍...阅读全文

Go与C语言的互操作

Go与C语言的互操作 九 26 bigwhite技术志 Blog, Blogger, C, Cgo, enum, GCC, Go, Golang, Google, interoperability, Linux, Opensource, Programmer, Slice, struct, union, 互操作, 共享库, 开源, 思考, 数组, 枚举, 汇编, 程序员, 结构体, 编译器, 联合体, 链接 5 Comments Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其...阅读全文

博文 2014-11-30 21:20:39 bigwhite

关于Go程序如何调试的讨论

对于Java或微软系的程序员,可能都会觉得IDE调试工具很爽。Java的IDE和微软的Visual Studio 确实很强大(当然,貌似 Mac 下的 Xcode 调试也很牛),很多程序员应该很依赖这些IDE。 不过,对于 PHP/Python 这样的脚本语言,大部分这类程序员应该都不用调试工具的,一般都是打 log,而且习惯了之后,你会发现效率也挺快。 对于 Go,属于编译型语言,不是脚本语言,而且强大的 GDB 支持调试 Go 程序。似乎 Go 程序的调试工具不是问题。然而,Go程序大部分时候并不适合使用 GDB 调试,主要原因当然是 Go 天生的并发性,并发情况下,断点调试和实际运行会有差别,可能不是bug的,调试会成为bug;是bug的,调试不出来;另一方面,GDB这种命...阅读全文

CentOS6.4安装Golang环境

什么是Go? Go是一门并发支持、垃圾回收的编译型的系统编程语言,目的是为了创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。 Go的主要特点有哪些? 类型安全和内存安全 以非常直观和极低代价的方案实现高并发 高效的垃圾回收机制 快速编译(同时解决C语言中头文件太多的问题) 为多核计算机***能提升的方案 UTF-8编码支持 CentOS 64bit下安装Golang环境 下载安装Fedora EPEL安装源 rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm 安装hop5的源 cd /etc/yum.repos.d wget http://w...阅读全文

博文 2015-07-22 03:00:00 cnsanshao

在Golang中使用C语言代码实例

自:http://www.jb51.net/article/56720.htm cgo 使得在 Golang 中可以使用 C 代码。 Hello World 为了有一个较为直观的了解,我们来看一个简单的例子,创建文件 main.go: package main /* #include void sayHi() { printf("Hi"); } */ import "C" func main() { C.sayHi() } 执行程序: go run main.go 程序执行并输出 hi(更多的范例可以见 $GOROOT/misc/cgo)。 Windows 下的准备工作 如果想要在 Windows 上使用 cgo,那么需要安装 gcc 编译器,这里我使用 mingw-w6...阅读全文

博文 2015-06-04 03:00:00 sevenyuan

Go语言Slice去重

package main import ( "fmt" ) func main() { a := []int{2, 1, 2, 5, 6, 3, 4, 5, 2, 3, 9} z := Rm_duplicate(&a) } func Rm_duplicate(list *[]int) []int { var x []int = []int{} for _, i := range *list { if len(x) == 0 { x = append(x, i) } else { for k, v := range x { if i == v { break } if k == len(x)-1 { x = append(x, i)...阅读全文

博文 2016-02-08 22:00:00 fyxichen

Go 语言发展史及史上最全 Go 语言知识图谱!

Go 语言发展至今已经过去十年多了,是目前最流行的新兴语言,云计算领域的首选语言,而且目前随着区块链的流行,Go 再次成为了这个领域的第一语言,以太坊,IBM 的 fabric 等重量级的区块链项目都是基于 Go 开发。今天和大家一起聊聊 Go 的发展历史,同时发布我们 Gopher China 整理的 Go 知识图谱。Go 语言发展史我们先从下面一张图来了解 Go 的来源:这是一封由 Rob Pike 在 2007 年 9 月 25 号,星期二,下午 3:12 回复给 Robert Griesemer、Ken Thompson 的有关编程语言讨论主题的邮件,邮件正文大意为:在开车回家的路上我得到了些灵感。1.给这门编程语言取名为“go”,它很简短,易书写。工具类可以命名为:goc、 gol...阅读全文

博文 2018-03-06 09:24:02 asta

说说c, c++ 和 go

今天接触到了Go语言, 请原谅我现在才接触到Go, 之前听云风大神说起过, 但我总把它和易语言混淆了, 导致我没有更早的了解到这个语言. 就在一年多前, 那个时候的我还是对C++无比的热爱, 认为c++是做后台服务器的不二选择. 那个时候总认为c 跟 c++是一家的, 所以我总爱标榜自己为c/c++程序员. C++虽然完全兼容了C(这是优点, 也是C++致命的缺陷), 但是C++跟C的设计思想可以说是很不一样的, 具体说起来可以参见云风关于C++和C的一些讨论. 对C++的认识随着自己做聚能推项目不断加深, 我了解几乎所有c++的特性, 但说实在的, 我能用上的特性真的不多. 我也试图研究那些神一般的模板元编程, 但我实在是研究不下去, 因为我觉得这么复杂的的实现, 只是为了那么一点点的效率...阅读全文

博文 2014-10-04 19:26:53 winkyao

Go语言特点

作者:asta谢链接:https://www.zhihu.com/question/21409296/answer/18184584来源:知乎 1、Go有什么优势 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。 语言层面支持并发,这个就是Go最大的特色,天生的支持并发,我曾经说过一句话,天生的基因和整容是有区别的,大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,...阅读全文

博文 2016-06-08 12:00:00 jking10

从C/C++过来,问几个关于go语言性能问题

我是才从C++迁移到go语言来的,因此对内存管理和变量生存期这块特别敏感,对效率也相对要求比较苛刻,开始使用过程中有很多困惑,可能还不习惯用GO吧,请高手指点: 1、有关channel的效率问题,比如我定义一个channel变量,ch1:=make(chan string) ,在goroutinue中向chan中读取(c<-ch1)和写入(ch1<-c)操作是否会产生string的复制代价,同理如果chan是一个很大的结构体,结构体里有大数组等,如果每次写入和读取chan都要复制一次数据,相当于c语言的memcpy,那么不仅会占用栈空间,而且造成程序效率底下。如果chan都定义为指针是否可以解决这个问题?是否会引入新的问题? 2、还是chan的问题,是否所有chan不用时都要执行关闭操作...阅读全文

【原创】Go语言/Golang 知识简单集锦

【技术人员对Go语言思考和选择】《许世伟:云计算时代,我与Go语言难解的缘分》 http://www.programmer.com.cn/13730/ 《许式伟:从关注 Erlang 转向 Go 的原因是什么?》 http://www.zhihu.com/question/21729007《许式伟:为什么我们需要一门新的语言,互联网时代的C语言-Go》 http://www.docin.com/p-465492390.html《为什么要使用 Go 语言,Go 语言的优势在哪里?》 http://www.zhihu.com/question/21409296 《使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?》http://www.zhihu.com/question/2109895...阅读全文

博文 2015-04-10 22:45:13 heiyeshuwu

Go语言暴力入门1

### Go语言暴力入门1 > 程序开发人员,不拘泥于语言与技术,合适和够用是最完美的追求,2017.05.04开始学习Go语言。 > 个人网站:http://www.linganmin.cn #### Go语言简介 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 #### 安装Go语言环境 > 请自行Google/B...阅读全文

上海Golang-U3D 工程狮,快到碗里来

unity3d研发工程师 工作职责: 1、负责unity3d游戏项目的客户端逻辑、UI、工具、图形特效的程序开发。 职位要求: 1、2年以上游戏行业工作经验,全日制本科学历及以上; 2、熟悉Unity3D游戏引擎架构设计,有相关项目开发经验; 3、至少一款上线产品,有成功项目经验优佳。 c++服务器研发工程师 工作职责: 1、参与手游服务器端需求设计,规划和实现; 2、服务器端与数据库、iOS、Android端的交互逻辑设计。 任职要求: 1、熟练使用C++编程语言,能独立负责服务器端的开发、管理等事务; 2、熟练掌握MYSQL数据库的开发、配置、维护、性能优化;熟练数据库存取、服务器端负载优化。 3、必须...阅读全文

golang 调用C语言 Cgo

Cgo 使得Go程序能够调用C代码. cgo读入一个用特别的格式写的Go语言源文件, 输出Go和C程序, 使得C程序能打包到Go语言的程序包中. 举例说明一下. 下面是一个Go语言包, 包含了两个函数 -- Random 和 Seed -- 是C语言库中random和srandom函数的马甲. package rand /* #include */ import "C" func Random() int { return int(C.random()) } func Seed(i int) { C.srandom(C.uint(i)) } 我们来看一下这里都有什么内容. 开始是一个包的导入语句. rand包导入了"C"包, 但你会发现在Go的标准库里没有这个包. 那是...阅读全文

博文 2014-10-04 19:27:16 ellice

Go语言中的byte和rune

Go语言中byte和rune实质上就是uint8和int32类型。byte用来强调数据是raw data,而不是数字;而rune用来表示Unicode的code point。参考规范: uint8 the set of all unsigned 8-bit integers (0 to 255) int32 the set of all signed 32-bit integers (-2147483648 to 2147483647) byte alias for uint8 rune alias for int32 可以通过下面程序验证: package main import "fmt" func byteSlice(b []byte) []byte { return b } func...阅读全文

[Go] --- 指针和内存分配

Email : hahayacoder@gmail.com 1 Go语言中的指针和C语言中在使用上几乎没有什么差别,熟悉C语言应该很容易掌握,下面是Go语言中使用指针的代码 package main import "fmt" func main() { var value int = 1 //指向int型的指针 var pInt *int = &value //打印相关信息 fmt.Printf("value = %d \n pInt = %d \n *pInt = %d \n", value, pInt, *pInt) //通过指针修改指针指向的值 *pInt = 222 fmt.Printf("value = %d \n pInt = %d \n *pInt = %d \n", valu...阅读全文

博文 2014-10-10 12:00:01 qiurisuixiang

[别人code自己实现] go语言实现随机数生成器

go语言实现随机数生成器。 package main import "fmt" import "math/rand" import "time" func rand_generator() chan int{ out:=make(chan int) go func(){ for{ rand.Seed(time.Now().Unix()) out <- rand.Intn(100) } }() return out } func main(){ rand_service_handler:=rand_generator() fmt.Printf("%d\n",<-rand_service_handler) } 最好设置seed的值,这样产生的随机数相对比较“随机”点哈。至于要用哪个值作为seed...阅读全文

博文 2015-06-17 23:00:49 blogNote

RedMonk的语言排名:JavaScript,Java保持领先;Go未进前20

avaScript在基于Github和Stack Overflow的排名统计中,均排名第一。 在RedMonk的这个月编程语言指数中:JavaScript,Java和PHP排名前三。这个指数基于Github 的语言代码行数和Stack Overflow上的语言标签数量。 “在狭隘的比较中,Java总是在排名中超过JavaScript,但二者的差异总是如此之远,以至于并不显著”,RedMonk首席分析师Stephen O'Grady这样说。“最显著的特点是该语言经常被描述为将死,有时又被吹捧地上升几位” RedMonk的指数中 Python, C#, C++, Ruby, CSS, C, 和 Objective-C也进入前十。排名11~20的语言为:Perl 和 Shell (并列11), R...阅读全文

golang指针

golang中的指针 总结一下golang中的指针与C语言的指针的用法. 总体一致: C的代码: int *number; number = (int *) malloc(sizeof(int)); *number = 3; printf("%d\n", *number); golang的代码: var pointer *int; pointer = new(int); *pointer = 3; fmt.Println(*pointer); 多重指针情况: C的代码: int **outer; int *inter; inter = (int *) malloc(sizeof(int)); *inter = 3; outer = &inter; //地址一样 printf("%p\n", ...阅读全文

博文 2015-09-17 18:00:05 bob_liu0909

go - struct类型

struct类型 1. 概述 与C语言struct一样,与java/php等class类似,在Go中,用于扩展类型,面向对象编程(本部分暂未做详细介绍)等 声明格式:(是类型的组合) type typeName struct { //... } 2. 声明及初始化 方法有几种: var varName typeName //① varName := new(typeName) //② varName := typeName{[初始化值]} //③ varName := &typeName{[初始化值]} //④ 注: ①③返回 typeName 类型变量;②④返回 *typeName 类型变量;③④[]可省略;若无初始化值,则默认为零值 初始化值可以分为两种: a. 有序: typeName...阅读全文

博文 2015-06-17 23:08:18 chuangrain

选择Go语言的12个理由

编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建、销毁与切换等能力。如果在这样的协程中调用一个同步 IO操作,比如网络通信、本地文件读写,都会阻塞其他的并发执行协程,从而无法真正达到协程本身期望达到的目标,而Go语言的出现解决了这个问题。 以下是原文: Go语言是谷歌推出的一种编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go语言在编程语言的家族中算是一个比较新的成员,弥补C语言的不足并且保持了C的极简主义,因此在过...阅读全文

博文 2014-11-02 17:00:00 OnafioO

第一个吃“螃蟹”的人——七牛云存储带你分享Go语言的乐趣

七牛云存储 七牛是一家专注于做云存储技术服务的公司,公司注册成立于2011年中旬(上海七牛信息技术有限公司),其目标是打造互联网数据存储的第一服务提供商。专注是他们的基本理念。尽管七牛还非常年轻,但七牛团队在分布式云计算和存储行业已经积累了超过7年的经验与沉淀。早前在国内大型互联网企业比如金山和盛大都有相关的技术成就,至今仍有相关结晶在投入使用。 七牛依托在云存储领域多年的技术积累,汇集了国内顶尖的技术人才,七牛联合创始人之一许式伟先生曾在2000年主持研发WPS,担任WPS Office 2005首席架构师,以及兼任前金山技术总监,2006年带领创办成立金山存储实验室,并于2009年婉拒Google加盟盛大创新院,主攻存储领域,盛大“祥云计划”(盛大云前身)的发起人。2011年,许式伟和一...阅读全文

博文 2014-10-15 16:00:00 liuzif

C?Go?Cgo![翻译]

文: http://golang.org/doc/articles/c_go_cgo.html 中文: http://zh-golang.appsp0t.com/doc/articles/c_go_cgo.html Cgo允许在Go包中调用C代码。如果Go代码含有特殊的cgo语法,可以通过cgo生成相应的Go和C文件,它们可以被编译到一个Go包中。 以一个例子开始,下面的Go包提供了 Random 和 Seed 两个函数,它们是基于C语言的 random 和 srandom 函数的实现。 package rand /* #include */ import "C" func Random() int { return int(C.random()) } func See...阅读全文

博文 2014-10-04 19:25:59 chai2010

Go语言面组合式向对象编程基础总结

Go语言的面向对象编程简单而干净,通过非侵入式接口模型,否定了C/C++ Java C#等传统面向对象编程语言的复杂度的必要性,我们发现在Go中即使简单的组合也能达到传统面向对象语言的效果,而且耦合度非常低,按照Go的作者之一也就是C语言的作者之一说的一句话:Go是更好的C语言。 1、Go中任意类型Any即 interface{}类型,也就是空接口,可以赋值为任意类型 2、可以为其他类型 内置类型 不包括指针类型添加相应的方法 但是注意的一点是一定要用别名。。进行包装 记住想要 为类型 添加新的方法 那么请把类型定义别名,别名和原来的类型就不一样了成了新类型 在Go中只能对非本地类型添加方法......也就是int不能添加方法 需要 type Int int 才可以为Int添加方法 pack...阅读全文

博文 2015-03-18 17:00:22 yue7603835

OC中怎么注释自己创建的方法?

在程序开发中,我们经常需要对代码进行注释,那对于iOS初学者而言,使用objective-c语言进行应用开发的时候,如何对方法进行注释呢?今天小编为大家分享的就是这部分知识,不清楚的亲,一起来看看吧。 在iOS应用开发中,对自己创建的方法进行注释,这与编写java代码时的注释javadoc类似,可以自动形成规范性的方法说明。 我们对方法进行注释时,最需要说明的就是方法的作用、方法的参数以及方法返回的结果,所以这里也只说这三个标签,其实很简单,如下所示: /** * @brief 通过两个参数请求一个结果. * * @param valueOne 第一个参数. * @param valueTwo 第二个参数. * * @return 返回结果. *...阅读全文