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

GO语言基础入门--类型

类型 本Go语言基础入门内容均来自于《Go语言编程》,个人记录,加深理解。 Go语言内置以下这些基础类型:  布尔类型: bool。  整型: int8、 byte、 int16、 int、 uint、 uintptr等。  浮点类型: float32 、 float64。  复数类型: complex64、 complex128。  字符串: string。  字符类型: rune。  错误类型: error。 此外, Go语言也支持以下这些复合类型:  指针( pointer)  数组( array)  切片( slice)  字典( map)  通道( chan)  结构体( struct)  接口( interface) 在这些基础类型之上Go还封装了下面...阅读全文

博文 2015-04-18 18:58 chenqijing2

golang学习笔记:go 语法篇(一)

学习一门新的语言肯定是要从他的基本语法开始,语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,其实最好的方法应该是旁边有本书,随时可以拿过来查阅或者纠正。当然golang的语法也是这样,下面的一些是我学习七牛云存储团队许式伟等出的《Go语言编程》: http://baike.baidu.com/link?url=vFrjnVJwITN0LaRbL7TmWYpq5V8JLWzL_NycAQy6w0e7JXP6a4bGm61ge0gGMU6jNFQO_RnuDGEQPh7YK9w4S_ 语法部分的时候整理的一些,这本书对于新手入门还是挺有帮助的。为了日后可以及时回顾,所以记录下来了。为了避免...阅读全文

博文 2015-06-09 12:12 u011321908

go语言选择语句 switch case

根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("Default") } 运行上面的案例,将会得到如下结果:  i = 0时,输出0;  i = 1时,输出1;  i = 2时,输出3;  i = 3时,输出3;  i = 4时,输出4, 5, 6;  i = 5时,输出4, 5, 6;  i = 6时,输出4,...阅读全文

博文 2015-07-28 13:52 osfipin

Go程序设计语言(一)

Go程序设计语言(一) 八 23 bigwhite技术志 Blog, Blogger, C, Cpp, Go, Golang, Google, Opensource, Programmer, 博客, 开源, 程序员, 编程,语言, 编译器 No Comments 本文译自Rob Pike的Go语言PPT教程 – "The Go Programming Language Part 1(updated June 2011)"。由于该教程的最新更新时间早于Go 1版本发布,因此该PPT中的一些内容与Go 1语言规范略有差异,到时我会在相应的地方做上注解。 谁发明了Go Go语言的设计和实现工作是由Google的一个研发小组以及来自世界各地的大量贡献者共同完成的。 联系方式: http://gola...阅读全文

go语言包与包引用

go语言中包(package)与java中的包(package)非常类似,都是组织代码的方式,而且都和磁盘上的目录结构存在对应关系。 go语言中,包名一般为go代码所在的目录名,但是与java不同的是,go语言中包名只有一级,而在java中包名是以点分割的多级目录组合的。 go语言中,引用包时需要以GOPATH/src目录为相对根目录,依次输入下面的各级目录名。 如:环境变量GOPATH = ~/go 包hello下有hello.go,包所在的磁盘路径为: ~/go/src/golang_everyday/hello 也就是说,hello.go的路径为: ~/go/src/golang_everyday/hello/hello.go 则在其它文件中引用该go文件时,代码应为: import ...阅读全文

博文 2015-03-03 08:59 baiyuxiong

一人千面:谈谈Go语言中的type

世界是复杂的。一个人、一个事物可以有多样的特性,而多个人多个事物又可以表现出一致的特性;从微观角度说,即具体到个体时,要求这个个体是多功能的多样性的,能够完成越多的功能具有越多的特性越好。比如一个人可以同时具有贤妻、慈母、严师和路人甲的身份,比如一个数字可以表示年龄、高度、分数等。从宏观角度说,从管理复杂性的角度出发,又要求许多的个体具有一致性以便进行统一处理以降低管理成本,比如各种机动车都可以“驾驶”,各种食物都可以“食用”,各种书写工具都可以“写”。换而言之:微观上一人千面;宏观上千人一面。 编程本质上是为了解决人类的问题满足人类的需要,所以需要把现实世界映射到编程语言里,即在编程语言中建立对应的模型。在Go语言里,提供了很好的机制来建立这种模型,也就是type和interface。ty...阅读全文

golang编程之时间编程

golang编程之时间编程 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include 阅读全文

博文 2015-01-30 09:22 stephen830

Go程序如何安全退出(CTRL+C)

http://m.oschina.net/blog/125853 如果是命令行程序需要退出, CTRL+C是最直接的方法. C语言如何处理CTRL+C CTRL+C会向命令行进程发送中断信号, 在C语言的中的signal函数可以注册信号的处理函数. signal函数的签名如下: void (*signal(int sig, void (*func)(int)))(int); 比如, 我们要处理CTRL+C对应的SIGINT信号: #include #include #include void sigHandle(int sig) { switch(sig) { case SIGINT: printf("sig...阅读全文

博文 2014-10-17 16:19 leonpengweicn

[Go语言]cgo用法演示

经历了数十年发展的C语言,各种各样的现成的库已经非常丰富。通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”。 本文所有代码,在下述环境中调试通过: Windows 8.1 64-bitGo 1.3.3 64-bitGCC 4.8.1 64-bit 要想使用cgo,要导入C“包”: import "C"这行代码的上方要紧挨着连续的若干行的注释,在这些注释中编写C代码。例如: /* int PlusOne(int n) { return n + 1; } */ import "C" 我们知道,如果要引用一个包中的符号,需要用“包名.符号名”的方式,C“包”也是这样,例如:C.int、C.GetWindowLongPtr。 下面介绍使用C语言变量、函数、结构体、联合体、回调函数...阅读全文

博文 2014-10-11 15:09 jthmath

我眼中的编程语言Rust和GO

我已经花了不少时间在把玩一些新语言 – 特别要指出,Rust抓住了我的想象力。我们在Chef中使用大量的Ruby、Erlang和JavaScript(后来是Angular)代码。以下是我喜欢这些语言的东西: Ruby的感觉就像永远在敲打我头脑中“whipuptitude”部分。它很容易,可以简单的坐下来开始编码,你基本不会碰到困难。它也有类似Perl中我很喜欢的表达力。你越熟练这个语言,你就会越觉得你好像可以用英语(母语)表达自己的想法。Erlang和OTP极好操作。那些模式匹配、Actor并发、单一赋值,还有令人愉快的运行时导致运行、管理、调试产品服务是一种乐趣,我认为它语法是丑陋的,但是当你掌握它后,你会发现它的某种简洁美。现代JavaScript以它自己的方式变得越来越讨人喜欢。比如你...阅读全文

博文 2015-09-01 23:09 haiguo_gu

golang指针与C指针的异同

总结一下golang中的指针与C语言的指针的用法。 总体一致: C的代码: ? 1 2 3 4 int *number; number = (int *) malloc(sizeof(int)); *number = 3; printf("%d\n", *number); golang的代码: ? 1 2 3 4 var pointer *int; pointer = new(int); *pointer = 3; fmt.Println(*pointer); 多重指针情况: C的代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 int **outer; int *inter; inter = (int *) malloc(sizeof(int)); *inter = ...阅读全文

博文 2014-08-31 17:39 zhjih123

go语言初始化内部结构体3中方式

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 type User struct { 8 Id int 9 Name string 10 Age int 11 } 12 13 type Manger struct { 14 User 15 title string 16 } 17 18 func main() { 19 m := Manger{User:User{1, "ok", 12}, title:"123"} //可以 20 m2 := Manger{User{1, "ok", 12}, "123"} //可以 21 m3 := Manger{User:User{Id:1, Name:"ok", Age:12}, title:"123"} //可...阅读全文

Go语言圣经中文版

在C语言发明之后约5年的时间之后(1978年),Brian W. Kernighan和Dennis M. Ritchie合作编写出版了C语言方面的经典教材《The C Programming Language》,该书被誉为C语言程序员的圣经,作者也被大家亲切地称为K&R。 同样在Go语言正式发布(2009年)约5年之后(2014年开始写作,2015年出版),由Go语言核心团队成员Alan A. A. Donovan和K&R中的Brian W. Kernighan合作编写了Go语言方面的经典教材《The Go Programming Language》。Go语言被誉为21世纪的C语言,如果说K&R所著的是圣经的旧约,那么D&K所著的必将成为圣经的新约。 镜像: http://books.stu...阅读全文

博文 2016-03-28 14:51 smallmaple

go类型断言

go里面的类型断言写法: x.(T) 其中x为interface{}类型 T是要断言的类型。 类型断言有个非常好的使用场景:当某个类型为interface{}的变量,真实类型为A时,才做某件事时,这时可以使用类型断言 下面有个例子。只有当某个interface{}的类型 存储的是int时才打印出来。 package main import ( "fmt" "math/rand" "time" ) func main() { var v interface{} r := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 10; i++{ v = i if (r.Intn(100) % 2) == 0 { v = "h...阅读全文

博文 2015-05-19 22:31 guonaihong

Go语言调用C语言函数的坑

最近在看人民邮电出版社 许式伟 吕桂华编著的《Go语言编程》,看到【1.2.9 语言交互性】小节的cprint.go。未按照书中源代码格式编写,而是把 import "C" 和 import "unsafe" 合并放入小括号中并和注释结束符 */ 间隔了一行,这也是大多数Go语言学习和开发者经常使用的代码风格,我修改后的代码如下: package main/*#include #include */import ( "C" "unsafe")func main() { cstr := C.CString("Hello, world") C.puts(cstr) C.free(unsafe.Pointer(cstr))} 结果在我的Windows 7 64...阅读全文

博文 2014-12-09 15:42 董松

Go 1.4正式发布 支持Android开发

摘要:Go是谷歌2009年发布的一门开源的编程语言,目前代码托管地址已经移到Github上,大家可以更加方便的访问和玩耍啦。 今年是Go诞生的第五个年头,而Go 1.4版本也是其第五个稳定版本。与Go 1.3版本相隔6个月时间。此次版本更新最引人注目的是官方支持Android,现在,开发者可以使用Go开发简单Android App了。 该版本对小的语言进行了改进,支持更多的操作系统和处理器架构;改进了工具链和库。同样,Go 1.4也优化了稳定性,编译和运行方面都没有修改。 语言方面的改进是for-range循环方面的语法改进,在1.3版本中有两种写法,现在只需这样就可以了: 引用for range x { ... } 在1.4版本中还出来一个新的子命令,go generate,该命令主要用来...阅读全文

给终端来点彩色(c语言和Golang版)

如果用过AIX或Linux下的nmon工具的应当会注意到,它可以把文字显示成多种颜色,并巧妙的利用颜色和字符组合出各种图形 来显示系统的运行情况。看看它官网附的这张图: 如果你看过它的源码,你会发现它用的是 Ncurses 库来实现彩色显示的。Ncurses很强大,可以在任何遵循ANSI/POSIX标准的UNIX系统上运行, 包含了一系列强大的功能。 但在这里,它并不是我要研究的对象,它太重量级了。 我想在这说明的是一种简单的可以让终端显示彩色文本的方法。利用16进制的颜色控制符就足以在终端打印出各种颜色了。这种方法不必调用 API,使用方式也很简单,我用c语言演示下: #include int main(void) { printf("\x1b[0;%dmhello w...阅读全文

博文 2014-12-09 10:07 xcltapestry

Go语言去除文件后缀

package main import ( "fmt" "path" "strings" ) func main() { fullFilename := "/Users/itfanr/Documents/test.txt" fmt.Println("fullFilename =", fullFilename) var filenameWithSuffix string filenameWithSuffix = path.Base(fullFilename) fmt.Println("filenameWithSuffix =", filenameWithSuffix) var fileSuffix string fileSuffix = path.Ext(filenameWithSuffix)...阅读全文

博文 2015-01-31 21:44 itfanr

go语言 自定义 error

package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 func test1() error { var val error = errors.New("XXX") return val } func main() { var e error = test() if e == nil { ...阅读全文

博文 2014-09-19 15:11 elick

RUST叫系统编程语言,而GO是网络编程语言

用GO你必须要搞清楚一点,GO不是面向CPU密集计算的,而是面向IO密集计算的!!!RUST才是面向CPU密集计算的语言,所以RUST叫系统编程语言,而GO是网络编程语言。GO跟JAVA的Spring是一个层面上的东西。对于那些无法同时操纵高级语言Python Ruby ...和系统语言比如C C++的中间类型的人,才会用JAVA GO。 但是别以为你用JAVA GO就能写出速度更快的IO,IO的速度跟语言的编译速度根本就没有多少影响。现在最快速的IO基本是多路复用而不是多线程。对于多路复用,语言的CPU计算根本无足轻重。 参考:http://www.oschina.net/news/62867/go-jav...阅读全文

博文 2015-05-29 16:31 findumars

Go调用C++代码相关资料

swig开源项目([http://www.swig.org](http://www.swig.org))为多种编程语言提供了相互访问的接口生成工具,这里面也包含了为go语言生成调用C、C++代码的功能。Go语言自带的cgo工具已经支持对C代码的调用,但对C++代码的支持确实不行,所以Go1已经把swig的C++这部分功能作为附带功能加入(参见Go源代码\go\misc\swig)。这样,C++这块的资源也可以被Go语言使用了。 1、[SWIG And Go](http://www.swig.org/Doc2.0/Go.html) 2、[使用swig工具为go语言生成调用C、C++代码例子](http://my.oschina.net/qinhui99/blog/64270) ...阅读全文

Go语言ssh简单的使用

package main import ( "bufio" "go-ssh/ssh" "os" ) func main() { SSH("user", "password", "ip_port") } func SSH(user, password, ip_port string) { PassWd := []ssh.AuthMethod{ssh.Password(password)} Conf := ssh.ClientConfig{User: user, Auth: PassWd} Client, _ := ssh.Dial("tcp", ip_port, &Conf) defer Client.Close() a := bufio.NewReader(os.Stdin) for { b...阅读全文

博文 2015-05-06 08:25 fyxichen

Azul3D_Go开发的3D游戏引擎简介

Azul3D 是一个用 Go 语言开发的 3D 游戏引擎。支持 Windows 和 Linux,基于 OpenGL 2.x 的渲染器,基于 OpenAL 的 3D 音频。 官网:http://azul3d.org/ 中国有团队开发没有,能开发成为类似cocos游戏引擎的就好了。再加上go的并发服务器,双赢啊。 —————————————————————————————————————— SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。 用途广泛。 SDL内置了调用OpenGL的函数。 通过使用SDL_image、SDL_ttf、SDL_mixer、S...阅读全文

一个java和golang(go语言)通信的例子。

go语言是一个系统级语言,好处非常多。虽然是一个静态编译型语言,但可以像动态语言一样写程序,语言本身可以提供编写应用程序所需的基本组件,而不用引入第三方的包。如果了解c++、java、python等,会对其简洁和强大有更深的认识,c++实在过于繁琐,java也没有想象的简单,python的效率和go不是一个数量级的。那么多的特性,印象最深的就是其对并发的支持,优雅而高效。一般情况下并发通过进程、线程、基于异步IO的回调来实现,进程和线程不能大量的创建,如超过1万个系统资源就不堪重负了,回调可以尽可能少的创建线程,但用法不太符合自然习惯,比如boost 的asio就是一个很好的处理并发的框架,使用得当可以写出高效优雅的服务器程序。而go则在语言级别支持协程,协程是一种轻量级线程,可以创建百万个...阅读全文

博文 2013-10-16 22:10 qfsun

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

golang之flag.String

无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作。如:./main -b /home/backupdir -d true 那么如何更好的解析这些参数呢?前两周自己做项目时是通过 range os.Args 来解析这些参数。今天看到了 flag.String 这个方法,感觉之前做的好傻,觉得更应该用golang自带的flag.String来解析参数。 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 ) 7 8 func main() { 9 backup_dir := flag.String("b", "/home/default_dir", "backup path") 10 de...阅读全文

博文 2015-07-19 20:16 hezhixiong

为什么 Go 不是一款好的编程语言

I like Go. I use it for a number of things (including this blog, at the time of writing). Go is useful. With that said, Go is not a good language. It's not bad; it's just not good. We have to be careful using languages that aren't good, because if we're not careful, we might end up stuck using them for the next 20 years. This is a list of my chief ...阅读全文

博文 2014-12-03 12:00:00 BreakinBad, 开源中国七里香, Ley

Go中error类型的nil值和nil

先看C语言中的类似问题:空字符串。 1 const char* empty_str0 = ""; 2 const char* empty_str1 = "\0empty"; 3 const char* empty_str2 = NULL; 以上3个字符串并不相等,但是从某种角度看,它们都是对应空的字符串。 empty_str0 指向一个空的字符串,但是empty_str0本身的值是有效的。empty_str1 指向一个非空的字符串,但是字符串的第一个字符是'\0'。empty_str2 本身是一个空的指针。 Go的error是一个interface类型,error的nil问题和C语言的字符串类似。 参考官方的error文档说明: http://golang.org/doc/go_faq.ht...阅读全文

博文 2014-01-22 15:23 kjfcpua

GoLang之对象

GoLang之面向对象 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承、虚函数、构造函数和析构函数、隐藏的this指针等。 类方法 在Go语言中,可以给任意类型(包括内置类型,但不包括指针类型)添加相应的方法。 如下面的这个例子,定义了一个新类型Integer,它和int一样,只是为它内置的int类型增加了个新方法Less() type Integer int func (a Integer) Less(b Integer) bool { return a < b } func main() { var a Integer = 1 if a.Less(2) { fmt.Println("less then 2") } } 可以看出,Go语言在自定义类型的对象中没有C++/Java那种...阅读全文

go语言的逆袭

Go 语言的哪些特点最吸引您? 并发 Go 最大的特色就是在语言层面天生支持并发,不需要像其他大多数编程语言那样需要开发者自行实现或借助第三方类库实现并发编程,Go 在语言级别支持的并发编程,其逻辑简化得通俗易懂简单好上手。 性能 不同于大多数脚本或解释性的高阶编程语言,用 Go 编写的代码直接了当编译成机器码高效执行。 简洁 25 个关键字即表达你能想到的所有招式,没有也不需要有任何多余,想干啥事就 go 一下。 跨平台 x86、AMD64 (x86_64)、ARM;Linux、Windows、Darwin (OSX)、FreeBSD、Android (计划Go 1.4) 几乎全平台支持,真正做到一份源码,随处编译,到处运行。 Go 语言都有哪些常见的应用场景? 作为一个 Go 语言的重度...阅读全文

博文 2014-07-21 14:28 fuyuehua22

Go编程语言-Eclipse集成goeclipse开发插件,安装详情及编写Hello Word-陈科肇

goeclipse 插件指南 http://goclipse.github.io/ 概述 GoClipse对于一个Eclipse IDE的Go编程语言。 特征 安装 用户指南 Github上 (最新发布) (报告问题) GoClipse用户组 -讨论和帮助,GoClipse 安装要求 Java VM version 8 or later. Eclipse 4.6 (Neon) or later. CDT 9.0 or later (this will be installed or updated automatically as part of the steps below). 开始安装 离线安装 因为GFC的封闭,我们需要先到https://github.com/GoClipse/go...阅读全文

博文 2016-08-29 14:38 u013474104

golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 select 的代码形式和 switch 非常相似, 不过 select 的 case 里的操作语句只能是【IO 操作】 。 此示例里面 select 会一直等待等到某个 case 语句完成, 也就是等到成功从...阅读全文

Go 1.4 Beta 1 发布

Go 1.4 Beta 1 发布,此版本是 Go 1.4 的 beta 版本,现已提供下载,反馈bug请前往这里。 此版本仅包括一个小的编程语言修改;对编译器做了重大修改,向后兼容 for-range loop 形式。此版本关键点在实现功能,改进垃圾收集器和为下个版本完整的收集器打好基础。 此版本还添加了新的工具,支持使用 go 命令生成构建时源代码。此版本支持 Android 和 Native Client(NaCl)的 ARM 处理器和 Plan 9 的 AMD64。 Go 1.4 最终版本计划在 2014 年 12 月 1 日发布,更多更新内容请看发行说明...阅读全文

博文 2014年10月31日 mengyidan1988

sqlite3安装问题

我按照[http://my.oschina.net/Obahua/blog/129689][1] [1]: http://my.oschina.net/Obahua/blog/129689 上的说明下载sqlite-dll-win32-x86-3080200.zip解压到system32文件夹中,然后安装TMD 版的 GCC 编译器tdm-gcc-4.8.1-3.exe在c盘根目录,路径也设置好,最后go get github.com/mattn/go-sqlite3,这是出现错误cc1.exe: error: unrecognized command line option "-fno-stack-protector",运行下实例也是出现这个错误,这是怎么回事啊?请大神帮忙...阅读全文

go语言-使用swig转化C++代码为go所用

服务端的某个项目,要考虑到性能问题,之前使用基于公司框架的php,性能有瓶颈,经过调研,决定使用go。因为之前有一个关键模块已经使用c++实现,所以计划使用go做HTTP容器,让go和c++模块结合起来。 在网上调研结合方案,go自带的cgo只支持c语言,swig工具可以支持多种语言结合c++,所以决定使用swig,这里简要叙述下swig的使用和一些发现的要点。 1. 我们解压了swig后,首先要根目录运行configure和make,这样会生成各个子目录的makefile,并在当前目录生成preinst-swig.in和swig可执行文件,这些在后续会拥有。 2. 我们进入Example的go里面,这里有一些值得参考的例子 3. 研究那个class例子,有这几个文件: class.cxx和...阅读全文

D、GO、Rust 谁会在未来取代 C?为什么?——Go语言的定位非常好,Rust语言非常优秀,D语言也不错

不要管我的地位和 D 语言创造者之一的身份。我会坦诚的回答这个问题。我熟悉 Go 和 Rust,并且知道 D 的缺点在哪里。我鼓励人们在 Rust 和 Go 社区相似身份的人,也可以提出他们诚恳的观点。接着,我们开始吧。 首先,C++ 在这个问题中也应该被提及。不管它是否取代 C,或是成为取代 C 的候选人之一,C++ 是这个等式的一个关键部分。它是最接近 C 的,同时也是从 C 中来的。在下面几个问题中我会假设 C++ 是把取代 C 作为目标的。每一个语言都有一些基础优势(我称之为“十倍优势”,因为在一定的基准上比其他打确实效率更高)和数个挑战。这些语言在未来能否取代 C 语言,取决于它们如何利用它们的十倍优势,并且如何克服他们的数个挑战。 你是晴天翻译于 2周前 0人顶 顶 翻译的不错哦...阅读全文

博文 2015-11-23 03:54 findumars

Golang中字符串的一个坑

在C语言中,字符串的内存模型定义为以NUL(\x0)结尾的字节数组。这是为大家所熟知的。 但是在Golang中并不是如此,Golang中的字符串abc和abc\x0\x0并不相当,所以说Golang明确规定了字符串的长度,而不是以\x0为结尾来判断的。 下面看示例代码: package main import ( "fmt" "os" ) func main() { var a[5]byte = [5]byte{'a','b','c'} var b[]byte = []byte{'a','b','c'} fmt.Printf("len(a): %d, %q\n", len(a), a) fmt.Printf("len(b): %d, %q\n", len(b), b) slice_a := ...阅读全文

博文 2014-02-23 13:41:38 华子

GO语言介绍及视频教程

其中包含GO语言基础教程,和开发工具。 http://pan.baidu.com/s/1eQ1fd3W 1简介 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。 Go是谷歌2009发布的第二款编程语言。2009年7月份,谷歌曾发布了Simple语言,它是用来开发Android应用的一种BASIC语言. 北京时间2010年1月10日,Go语言摘得了TIOBE公布的2009年年度大奖。该奖项授予在2009年市场份额增长最多的编程语言。 谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,今天...阅读全文

golang 位操作

package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1...阅读全文

博文 2014-12-20 18:36 moodlxs

go与c互相调用

此例子来自于go源码中,借此来和大家分享一下两者如何调用,网上很多文章语言不详,也没有一个完整的测试例子 目录结构 首先src 目录下有 testcgowin目录下: 这里的_obj目录是cgo生成的 这里需要展示的是go中如何调用c语言导出函数,以及在c语言中如何调用go的导出函数. 关键是cthread.go和cthread_windows.c两个文件 go文件 cthread.go内容: package ctestcgowin// extern void doAdd(int, int);import "C"import ( "sync" "fmt")var sum struct { sync.Mutex i int}//export Addfunc Add(x int) { defer...阅读全文

博文 2016-04-17 17:33 baizx

Golang中如何模拟C语言中的if(scanf(…)==EOF)来控制输入的终止

相信很多从C/C++转到Golang的朋友们都经常会对Go中的输入控制感到头疼。。。尤其是如果要在Go中模拟C语言中的如下代码会遇到不小困惑: char input[100]; while (1) { if (scanf("%s", input) == EOF) { printf("输入结束\n"); break; } } 上面这段代码在控制台中输入一个Ctrl+Z(EOF) 就可以终止输入了: C语言中的 int scanf() 函数返回的是一个int类型,它的值只有三种情况: (1) 如果一切正常,返回输入的字符个数,即值>0 (2) 如果出现错误,返回0 (3) 如果遇到结束符EOF,返回-1 注意第三条:遇到结束符会返回-1,这样就会结束输入。也就是说,如果我们输入EOF(EOF其实...阅读全文

博文 2014-03-06 22:30 u011774512