最新消息:比度技术-是关注云计算、大数据、分布式存储、高并发、高性能、人工智能等互联网技术的个人博客。

golang 语言要点-(转)

编程开发 bidu 368浏览

原文链接: http://blog.csdn.net/cnsword/article/details/17039073
作者: cnsworder
记录一下学习go语言的一些知识点,网上go语言的入门教程很多,也有对某个点深入分析的教程,这篇文章不是入门教程只是对于学习golang过程中的一些特殊点进行记录,当然这些点是建立在个人(c,c++,Python)基础上的。
GOPATH是go查找包的路径,GOROOT是go的安装目录,GOBIN是go build生成的bin的目录
go是强类型语言,类型声明在后边
import . “fmt”开放包内容,import f “fmt” 包别名
var p = fmt.Println 定义函数引用
空是nil而不是NULL或null
go中没有枚举
const、var和import可以加()来搞定多个
:= 不能声明全局变量,只能通过var来声明全局变量
rune = uint,byte = int8
a := […]int{1, 2, 20: 3}
switch类型比C更多了,省略匹配值后case可以是任意条件语句
每个文件可以有一个init()函数负责初始化,但不能被显式调用
typedef可以使用type来实现
函数返回值在后边
func可以返回多个值,也可以直接返回,返回值储存在声明的变量中
可以为任意的struct增加func,包括内置类型,但是内置类型需要先type typename a_type成一个本地类型
不定参数通过…type来实现,通过for rangs来取值
if else for可以不加括号,没有while语句
分号可以省略
大括号必须在行为
指针也用.而不用->,指针是这样写的*int,指针不能运算
new是函数用来给指针分配内存,只清零不初始化,new([] int)
make可以初始化切片,map,chan。返回的不是指针,是一个初始化的实例,make([]int, 10, 100)
没有class,只有struct,多了interface,没有继承和虚函数的概念
struct的变量前没有var
interface中的方法前没有func
T Interface{}定义空接口,空接口可以对应任意类型,可以通过T.(Type)转换到相应类型,这种写法只适用于空接口
interface通过interfacename(*struct)生成一个绑定
string是内置类型
没有char类型了,使用byte,字符串直接是string
操作string可以借助strings包
panic对应catch,defer对应try,而恢复运行需要revcover
chan默认是阻塞的非阻塞他哦难过select + default来实现,或者借助time超时来实现,close(channel)关闭chan
NewTimer的time.C只执行一次,而newTicker的ticker.C借助for rang可以循环,ticker.Stop()停止循环
mutex等在sync包中
原子操作在sync/atomic包中
socket在net包中,net.Listen监听,net.Accept接受,net.Dail建立链接,conn.Close关闭
httpserver用net/http包
系统调用用os包和syscall包
与C交互用cgo包
go自己进程见通讯使用,目前go与其他语言程序的进程间通讯需要借助c来实现
//include <stdio.h>
import “C”
import “unsafe”
来引入Cgo
cgo申请的内存需要手动释放C.free(unsafe.Pointer(Char))
cloud9构建go语言开发环境参考:http://www.oschina.net/translate/go-up-and-running-on-cloud-9
入门可以看一下皓哥的:http://coolshell.cn/articles/8460.html http://coolshell.cn/articles/8489.html
个人窃以为,go语言是魔法,目前对ruby的冲击最大,目前还无法对c/c++和python造成冲击,但后期发展前景在Docker采用后一切光明了。

转载请注明:比度技术-关注互联网技术的个人博客 » golang 语言要点-(转)