阅读更多

25顶
4踩

编程语言

翻译新闻 Google Go编程语言入门

2010-01-21 11:28 by 资深编辑 wutao0603 评论(32) 有22755人浏览

Go是去年Google推出的一种全新的编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。

 

Variable Declarations(变量声明)
var sum int // Just a declaration
var total int = 42 // A declaration with initialization

第一眼看上去有些奇怪,但这样是有好处的,例如下面的这个C代码片段:

int* a, b;

这就意味着a是一个指针,但b却不是。要声明他们都是指针必须重复两次,但在Go中,你可以这样声明:

var a, b *int

 

当一个变量被初始化后,编译器会自动识别他的类型,所以不必要指明其类型:

var label = "name"

 

这样var关键字也就多余了,因此作者提出了一个新的赋值操作符声明并初始化一个新变量:

name := "Samuel"

Conditionals(条件) 

Go中的条件句使用If-else,与C语言相同。但是它的条件不需要包含在括号中,这将减少阅读代码时的视觉混乱。当然,在条件之前还可以添加一个简单的声明。

 

result := someFunc();
if result > 0 {
	/* Do something */
} else {
	/* Handle error */
}

还可以:

if result := someFunc(); result > 0 { 
	/* Do something */
} else {
	/* Handle error */
}

 

Switches

Switches 语句也与C类似,但是在C的基础上进行了改进。

 

 C 代码:

int result;
switch (byte) {
 case 'a':
 case 'b':
   {
     result = 1
     break
   }

 default:
   result = 0
}

 Go 代码:

var result int
switch byte {
case 'a', 'b':
  result = 1
default:
  result = 0
}

 

Go 匹配的不仅仅是integer和character类型。

 C 代码:

int result = calculate();
if (result < 0) {
  /* negative */
} else if (result > 0) {
  /* positive */
} else {
  /* zero */
}

Go 代码:

switch result := calculate(); true {
case result < 0:
  /* negative */
case result > 0:
  /* positive */
default:
  /* zero */
}

当switch的值被忽略时,假设为真,所以上述代码还可简化为:

switch result := calculate(); {
case result < 0:
  /* negative */
case result > 0:
  /* positive */
default:
  /* zero */
}

 

原文对Go语言的语法进行了详细的介绍,此文章只是原文的一小部分,更多详情请查看原文:Google Go: A Primer

来自: infoq
25
4
评论 共 32 条 请登录后发表评论
12 楼 prowl 2010-01-22 10:15
groovy - -||
11 楼 wangzaixiang 2010-01-22 09:26
jfxia 写道
严重怀疑作者是否写过C语言程序,真是不敢相信这段代码能通过C编译:

   {
     result = 1
     break
   }

default:
   result = 0


是啊,严重质疑,这么简单的代码咋就不能编译了呢?你用的是火星上的C编译器啊?
10 楼 smiky 2010-01-22 09:12
赋值好像oracle里面的做法啊,不知道尊守的是那个标准
9 楼 jfxia 2010-01-22 09:04
严重怀疑作者是否写过C语言程序,真是不敢相信这段代码能通过C编译:

   {
     result = 1
     break
   }

default:
   result = 0
8 楼 ssuhvs 2010-01-22 08:50
var 叫我想起了 js
7 楼 winie 2010-01-22 08:48
怎么感觉像动态语言?
6 楼 yang_kunlun 2010-01-21 19:27
5 楼 JetMah 2010-01-21 15:22
var 让我想起了很多很多
4 楼 uiiang 2010-01-21 14:56
这是新闻 ?
3 楼 gakaki 2010-01-21 13:25
搞了那么恶心的语法原来是为了在系统级别软件上
对上是erlang C 和C++啊

那支持C和C++的指针实在不怎么样
如果速度可以和C比那么go还算不错
2 楼 songfantasy 2010-01-21 13:00
var 让我想起了  ActionScript
1 楼 neo 2010-01-21 12:29
var 让我想到了pascal/delphi

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Delphi自动在线升级程序源码

    已经比较成熟的在线升级程序,有谁有更完善的或者能修改成更好的版本,请发给我一份。

  • Delphi 样例-属性编辑器

    运行效果如下 窗体布局 object Form1: TForm1 Left = 0 Top = 0 Caption = #31034#20363'-'#23646#24615#32534#36753#22120 ClientHeight = 243 ClientWidth = 527 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -

  • Delphi IDE扩展开发向导

    作者:Borland(由CnPack翻译)来源:www.CnPack.org 以后文章中没有写我的开场白:技术交流,DH讲解 的都是转载的,知道作者名字的,我会写出来,不知道也没有办法了.但是好文章还要拿出来和大家分享的. 一、 概 述 1、 前言 Delphi的IDE扩展是一般程序员很少涉足的领域,不管是网上还是书店里,这方面的资料都是鲜有所见。Delphi7自带的帮助文件是...

  • delphi提示:File not Found:DockForm.dcu的解决办法

    安装控件时,如果引用了dsgnintf单元,那么就会提示找不到proxy.pas 或者DockForm.dcu的错误,只需在安装控件包时添加“lib\DesignIde.dcp”即可

  • Delphi2010 RTTI + Attribute 简单实现ORM实例

    1、支持ORM,最基础的两个信息是表的信息和字段信息。这两个信息,如果用Attribute 来辅助,代码更简洁和可读性更好。可以把属性名当做真实字段名,也可以将特性里的属性当成真实姓名,再加上字段标题(可以当成注释)、必填字段、是否为主键、显示格式等等,如果没有Attribute ,类、属性的辅助信息必须用其他信息来描述,非常麻烦。 uses SysUtils, RTTI, TypInfo

  • getAttribute获取属性值

    获取style时,firefox中可以正确运用.ie中则需再用cssText.

  • Runtime中property_getName与property_getAttributes

    初步接触Runtime相关方法

  • DzNoteEditor:用于TString的Delphi属性编辑器,支持带语法突出显示的格式化语言

    DzNoteEditor 用于TString的Delphi属性编辑器,支持带语法突出显示的格式化语言 什么是新的 03/13/2021(版本1.6) 由于出现AV错误肯定警告,已从组件源中删除了CompInstall.exe(现在您可以直接从CompInstall存储库中获取它)。 02/01/2021(1.5版) 从环境列表中删除了Delphi XE2,因为该版本无法进行编译。 2020年12月18日(1.4版) 更新了组件安装程序应用程序(将Delphi安装在包含空格字符的路径中时,对rsvars.bat的固定调用)。 2020年10月31日(1.3版) 随附的Delphi 10.4自动安装支持。 2020年10月27日(1.2版) 修复了以前的Delphi版本(至少在XE2,XE3,XE4和XE5上)软件包标签。 这导致程序包编译错误。 修复了System.Ima

  • 像Delphi IDE一样运行时设计控件IDesignerNotify, IDesignerHook的实现

     前几日有个朋友问我Delphi的TCustomForm的Designer是怎么实现的.以前研究过这个.于是花了一个上午写了代码给他.代码如下.想要设计窗口的时候直接调用一下BeginDesign函数.结束设计调用一下EndDesign就行了.感兴趣的可以到盒子上下载Demohttp://www.2ccc.com/article.asp?articleid=4367{*****

  • not find ComponentDesigner.pas ComponentDesigner.dcu 解决方法

    http://blog.csdn.net/highroad/article/details/4782955 编译发现还是组件中找不到DesignIntf.pas、Proxies.pas、ComponentDesigner.pas等源文件,网上查找但没有几个能解决问题。后来找到一个办法,即在组件包中加入一个delphi7带的DesignIde.dcp,如下红色标识的代码。       Delph

Global site tag (gtag.js) - Google Analytics