go笔记1-helloWorld


有一次听一个沙龙技术演讲,讲师说go是互联网时代的c,听了详细介绍之后感受很赞,尤为是并行层面真正在语言层面上作了控制及特殊的内存管理机制等。。。 php



好吧,下面上先上helloWorld代码。(之后系列的博客也是以代码为主) java



package main //这个是必须的,全部的go文件必须以 package开头

import "fmt"  // ”fmt“是go必需要引入格式化I/O的库。若是要引入多个库import用(  )号包裹全部的库。例如 import ( “fmt” “strconv”)

func main() {    //这是主函数
	fmt.Printf("hello world!")// fmt的Print()函数用于打印
}



这是最简单的一个go程序。 python



关于go程序的编译跟执行笔者是再win7 64bit机器用的LiteIDE工具,LiteIDE是由国人开发的一款go编译执行开发环境,用起来感受挺不错的。第一次编译执行go程序须要配置工具的LiteEnv(主要是配置golang下载解压后的目录) linux



下面说一下go的一些变量定义: c++


go语言与其余语言不通的地方就是在变量类型放在变量后边 以下: golang


var i int; 编程

var j bool; 并发

给i跟j赋值 app


i=10; jvm

j=true;


若是要定义不少变量会须要些 var,go也能够这样定义变量 以下:

var(

  i int

  j bool


golang还有本身的简便写法 变量名:=值  这种方式go会自动根据值定义其类型 以下:

i:=10;

j:=true;


go的int 类型根据硬件他们的长度是不一样的,会分文int32 int64 。int int32 int64定义的变量是不能够直接赋值的。须要转换类型。



我的总结起来golang的几大优势:


   1,简洁,go代码很简洁,能在短短的几行代码里作不少东西。代码简洁致使了代码更清晰。对比笔者吃饭用的java来讲,减小了不少冗余,毕竟java是以方法为单元的,不免会有冗余。

   2,并发控制好,go再os层面上独自封装了一层叫gorountines的轻量线程,由语言层面进行了并发控制,其余语言来讲java也只是在语言层面上作了synchronized加锁控制。虽然java运行在jvm里,但实际上也没有脱离os层面,jvm也会调用os层面的线程。另外笔者熟悉的php,python等也有一些附加的线程库来写并发程序,实际也是调用os层面线程的模型。gorountines是一个轻量的线程,一秒切换的速度是远远快于线程的。

   3,gorountines之间通信交换数据要用channel完成。golang的并发模型是从新设计的。以前的语言例如java是经过共享来通信(经过分享一段内存,各个内容之间经过加锁进行控制,这样根据加锁力度会形成程序复杂度会不一样),golang是经过经过通信来共享的,每一个并行单元只管理本身的内容,意思是说,在gorountines之间根本就不用显示的进行加锁控制,并且强制通信成本变低,这样通信速度就会加快。还有channel是阻塞的。跟c的串行编程思想是一致的。由于channel是阻塞的,因此除了通信功能以外,还能够用来作同步。(读阻塞,写阻塞)

 4.再就是编译速度快,另外想说的是golang有很严格的规则,若是go程序里引入了没有用到的库,或者定义了一个程序里没有用到的变量,程序是编译不过去的。可是go的错误提示会很详细。

5.变量定义类型是定义在后面 这跟以前的不少大众语言都不同,致使笔者常常犯这个错误,举例:var str string;

6.go简化并行开发有GC参与其中,这就不用关注须要关闭哪些变量,go会自动帮你作这些工做。相似java,解决c c++程序开发过程最常常用碰到的内存泄露问题。

7.另外go的全部编码都是基于Utf-8的。官方宣传视频讲写go程序会很happy,go用起来的感受更像linux。。

相关文章
相关标签/搜索