Go——Go语言简介

Go语言的诞生背景

G0语言的诞生主要基于如下原因:

  1. 摩尔定律接近失效后多核服务器已经成为主流,当前的编程语言对并发的支持不是很好,不能很好地发挥多核CPU的威力。
  2. 程序规模越来越大,编译速度越来越慢,如何快速地编译程序是程序员的迫切需求。
  3. 现有的编程语言设计越来越复杂,由于历史的包袱,某些特性的实现不怎么优雅,程序员花费了更多的精力来应对编程语法细节而不是问题域。

G0语言就是为了解决当下编程语言对并发支持不友好、编译速度慢、编程复杂这三个问题而诞生的。

Go语言特性

特性集合特性项GoCJava
基础语法关键字和保留字25个ANSI32个大于48个
控制结构支持顺序、循环、分支支持顺序、循环、分支支持顺序、循环、分支
类型系统动、静特性静态语言,支持运行时动态类型静态语言静态语言
强、弱特性强类型弱类型强类型
隐式类型推到支持
类型安全类型安全非类型安全类型安全
自定义数据类型支持type自定义struct通过类/接口实现自定义类型和行为
抽象函数支持支持支持
面向对象支持类型组合支持面向对象struct内嵌函数指针支持类/接口
接口Duck模型void*间接支持显式声明
多态通过接口支持void*间接支持接口及继承关系支持
元编程泛型支持
反射支持
平台和运行模式编译模式编译成可执行程序编译成可执行程序编译成字节码
运行模式直接运行直接运行虚拟机加载执行
内存管理支持自动垃圾回收手动管理支持自动垃圾回收
并发支持协程(语言原生支持)OS线程(库支持协程)Java线程(JVM内部映射到OS线程)
交叉编译支持支持中间代码无交叉编译必要
夸平台支持支持原生跨平台
语言软实力标准库和第三方丰富,发展很快很丰富很丰富
框架丰富,发展很快很丰富很丰富
语法兼容性向前兼容性好向前兼容性好向前兼容性好
影响力社区活跃,Google背书40多年宝刀未老社区活跃
应用领域云计算基础设施软件、中间件、区块链OS及系统软件企业级应用/大数据/移动端

第一个Go程序

package main

import "fmt"

func main() {
	fmt.Println("Hello world!\n")
}

程序功能解读:

  1. 第1行定义一个包,包名为main,main是可执行程序的包名,所有的Go源程序文件头部必须有一个包声明语句,Go通过包来管理命名空间。
  2. 第3行import引用一个外部包fmt,可以是标准库的包,也可以是第三方或自定义的包,fmt是标准输入/输出包。
  3. 第5行使用func关键字声明定义一个函数,函数名为main,main代表Go程序入口函数。
  4. 第6行调用fmt包里面的Printf函数,函数实参是一个字符串字面量,在标准输出里面打印一句话“Hello world!\n”,\n是一个转义符,表示换行。

Go源代码的特征解读:

  • 源程序以.go为后缀。
  • 源程序默认为UTF-8编码。
  • 标识符区分大小写。
  • 语句结尾的分号可以省略。
  • 函数以func开头,函数体开头的“{”必须在函数头所在行尾部,不能单独起一行。
  • 字符串字面量使用““””(双引号)括起来。
  • 调用包里面的方法通过点“.”访问符,比如示例中的fmt.Printf。
  • main函数所在的包名必须是main。

编译运行:

//编译
go build hello.go

//运行
./hello
Hello world!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值