Go——Go语言简介

短命女 2023-10-09 19:53 74阅读 0赞

Go语言的诞生背景

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

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

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

Go语言特性




























































































































































































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

第一个Go程序

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello world!\n")
  5. }

程序功能解读:

  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。

编译运行:

  1. //编译
  2. go build hello.go
  3. //运行
  4. ./hello
  5. Hello world!

发表评论

表情:
评论列表 (有 0 条评论,74人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言指针简介

    楔子 2021-1-5,天气阴,啊,拖延症又犯了,两天前的博文一直拖到今天,唉,今天得加个班了,再拖下去估计以后都更不完了,emmmm!!! 指针类型 什么是指针

    相关 javascript语言简介

    目录 一、简介 二、体系 三、CSS,javascript的引入方式 1、行内  2、文本内部 3、外部链接  4、js的输出方式 5、算法的特点 -----

    相关 SQL语言 简介

    SQL语言 SQL语言按照功能划分成以下4个部分: 1. DDL(Data Definition Language)数据定义语言,它用来定义我们的数据库对象,包括数据