Go 语言 与 C 语言 的比较学习
来源:互联网 发布:阿里域名 编辑:程序博客网 时间:2024/05/22 00:10
对于MarkDown 编译器没有自动保存功能这件事情, 我表示严重的厌恶。 一个来小时的整理化为乌有,而且居然还不能导入到HTML编辑器, 真是无法忍受!
关键字
操作符
~
^
选择 ? :
取指针内容 ->
写入读出 <- ->
初始化并赋值 :=
其余的运算符基本相同
变量
int i
(var) NAME TYPE var i int
字符(串) char , char []
byte byte[], string
整形位宽 依赖于特定的平台和编译器 可以指定宽度, 也可以依赖平台编译器 有效范围 栈上开辟的变量在作用域内有效, 堆上开辟的变量手动释放之前有效 最后一个引用离开作用域之前都有效 作用域控制 static 限制于本文件有效 , extern 寻找其他文件的全局变量 大写开头可以导出, 小写仅限本包使用指针
假设a
是一个指向某结构体的指针,这个结构体中有个成员叫b
。
a->b
a.b
- 取指针
&
运算符 和解指针*
运算符是一样的. - 在指针比较中, Go 中的 nil 等效C语言的 NULL .
函数
返回值
比如:
func exchange( a int , b int ) ( int , int ){ return b , a}
闭包
C 语言的函数和变量是两个不同的概念, 变量仅可以通过函数指针的形式来标识一个函数.
Go 语言的函数也是一种变量 .
尝试下一下代码:
package mainimport "fmt"func GetFunc( ) func(int) int { i := 0 // 这个变量被绑定到下面的返回函数 return increment_i ( j int ) int { i += j; return i } }func main() { func_i1 := GetFunc() func_i2 := GetFunc() // 上面两次调用GetFunc, 获得两个increment_i 函数, 各自绑定自己的 i 变量 for i :=0 ; i < 10; i++ { fmt.Println("Func1 print : ", func_i1(i)) fmt.Println("Func2 print : ", func_i2(i+1)) }}
PO
编程规范
- 句末不需要分号
- if for 的代码段必须被大括号包围
- if 的 condition 不要括号
- for 的 指示部分不要括号
- 左花括号不能自成一行
OO
- Method
在关键字 func 和函数名字之间说明属于那个结构体。
type OOTest struct { a int}func ( this * OOTest) GetAByPointer() int { return this.a}func ( this OOTest) GetAByCopy() int { return this.a}
- Interface
定义接口,说明函数类型
type IOOTest interface { GetAByPointer() int }
使用的时候将实现了对应的接口的结构体对象指针赋值给接口对象
var i_test IOOTestvar test OOTest i_test = &test
Combination
没啥子好说的Inherit ( by anonymous combination )
type OOTest1 struct{ OOTest b int}
这样 OOTest1
就拥有了 OOTest
的成员变量和方法
并发
chan
机制项目管理
1 0
- Go语言学习笔记----与C语言的比较学习
- Go 语言 与 C 语言 的比较学习
- 看懂C/C++语言的声明语法,并与Go语言进行比较
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- C语言与Java语言的比较
- Go语言的学习
- go语言cgo -- C与Go互调
- go语言和C语言的对比
- C语言与C++的比较
- C语言sizeof 与 strlen的比较
- java与c语言的比较!
- java与c语言的比较
- C语言与C++的比较
- Cordova入门课程
- NSMutableAttributedString 诡异的问题
- Android异步线程框架封装
- hdoj 2094 产生冠军 【拓扑】+【STL】
- 使用HashSet过滤重复字符
- Go 语言 与 C 语言 的比较学习
- 如何用openssl命令行生成证书
- HUD 1035 Robot Motion 【DFS】
- 《华为技术认证HCNA网络技术实验指南》参考配置
- ubuntu下彻底删除软件
- 第六周项目5 友元类
- 图片的本地存取(ROM)
- android PM2.5监控demo开发
- <一>Flex(Flex+j2EE)