go包c语言 go c 语言( 二 )


一个简单而又符合Go惯用法的基于cgo的包是Russ Cox写的gosqlite. 而Go语言的网站上也列出了更多的的cgo包.
最后, 如果你对于cgo的内部是怎么运作这个事情感到好奇的话, 去看看运行时包的cgocall.c文件的注释吧.
为什么要使用 Go 语言?Go 语言的优势在哪里?1、简单易学 。
Go语言的作者本身就很懂C语言,所以同样Go语言也会有C语言的基因,所以对于程序员来说,Go语言天生就会让人很熟悉,容易上手 。
2、并发性好 。
Go语言天生支持并发,可以充分利用多核,轻松地使用并发 。这是Go语言最大的特点 。
描述
Go的语法接近C语言,但对于变量的声明有所不同 。Go支持垃圾回收功能 。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输 。
【go包c语言 go c 语言】在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数 。
与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能 , 但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持 。
没有类 , C语言有结构体,那么Go的结构体有什么特别之处? Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念 。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性 。
自定义类型
在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型 。
自定义类型是定义了一个全新的类型 。我们可以基于内置的基本类型定义 , 也可以通过struct定义 。例如:
通过Type关键字的定义,MyInt就是一种新的类型,它具有int的特性 。
类型别名
类型别名是Go1.9版本添加的新功能 。
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型 。就像一个孩子小时候有小名、乳名 , 上学后用学名 , 英语老师又会给他起英文名,但这些名字都指的是他本人 。
type TypeAlias = Type
我们之前见过的rune和byte就是类型别名,他们的定义如下:
类型定义和类型别名的区别
类型别名与类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别 。
结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型 。b的类型是int 。MyInt类型只会在代码中存在 , 编译完成时并不会有MyInt类型 。
Go语言中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时 , 这时候再用单一的基本数据类型明显就无法满足需求了 , Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体 , 英文名称struct 。也就是我们可以通过struct来定义自己的类型了 。
Go语言中通过struct来实现面向对象 。
结构体的定义
使用type和struct关键字来定义结构体,具体代码格式如下:
其中:
举个例子,我们定义一个Person(人)结构体 , 代码如下:
同样类型的字段也可以写在一行,
这样我们就拥有了一个person的自定义类型,它有name、city、age三个字段,分别表示姓名、城市和年龄 。这样我们使用这个person结构体就能够很方便的在程序中表示和存储人信息了 。
语言内置的基础数据类型是用来描述一个值的,而结构体是用来描述一组值的 。比如一个人有名字、年龄和居住城市等,本质上是一种聚合型的数据类型

推荐阅读