首页 > 其他分享 >【1.0】Go语言介绍及引入

【1.0】Go语言介绍及引入

时间:2023-11-11 11:16:11浏览次数:31  
标签:Ken 1.0 语言 Rob 引入 版本 Go go

【一】Go语言介绍

  • Go语言是Google公司在2007开发一种静态强类型、编译型语言,并在2009年正式对外发布。
  • 静态强类型语言
    • 需要先编译再执行
      • 比如C、C#、Java等语言需要先将代码编译成不同平台的可执行文件,才能在不同平台上运行
    • 需要解释器
      • 比如Python、PHP、node.js等语言,将代码边编译边执行
    • 强类型
      • go语言中,不同类型之间不允许直接运算(需要强制类型转换)
      • go如何做强制类型转换(显示类型转换--代码转换)
      • java:强类型(隐士类型转换--默认转换)
    • 弱类型
      • 比如,JS代码中允许字符串和数字运算
  • Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。
  • 很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了21世纪互联网环境下服务端开发的各种实用特性。

01

【二】Go语言的诞生

  • 事件起源于2007年9月,当时C++委员会正在Google对C++语言新增加的35个新的特性进行一场分享演讲。
  • Google的技术大神们也在认真听讲座,其中就有Go语言的三个创作者,分别是:
    • Robert Griesemer(罗伯特.格利茨默),
    • Rob Pike(罗伯.派克),
    • Ken Thompson(肯.汤普森)。

02

  • Rob Pike(罗伯.派克)
    • 罗布·派克是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M.Ritche(C语言之父)开发Unix的猛人,UTF-8的设计人。让人佩服不已的是、罗伯伯还是1980年奥运会射箭的银牌得主。
  • Ken Thompson(肯.汤普森)
    • Ken Thompson,C语言前身B语言的作者、与Dennis Ritchie是Unix的原创者。1983年图灵奖得主以及1998年美国国家技术奖(National Metal of Technology)得主。
  • Robert Griesemer(罗伯特.格利茨默)
    参与制作了Java的HotSpot编译器以及Chrome览器的javascript的搜索引擎V8。
  • 随着会议的中场休息,大家开始了对这些C+语言新特性是否带来更多的价值进行吐槽。

    • Rob Pike他们认为:
      • 简化语言的成就远大于添加功能。
    • 于是,一门新的语言,Go,在这个思路下应运而生。
  • 2007年9月25号,Rob Pike在回家的路上得到关于新语言名字的灵感,于是给另外两人发了邮件:

03

  • 邮件正文大意为:

    • 在开车回家的路上我得到了些灵感。
    • 给这门编程语言取名为“go"",它很简短,易书写。工具类可以命名为: goc、gol、goa。
    • 交互式的调试工具也可以直接命名为"go”。语言文件后缀名为 .go等等
  • 这就是Go语言名字的来源

    • 自此之后Robert、Rob和Ken三个人开始在Google内部进行了研发
    • 一直到了2009年,Go正式开源了
    • Go项目团队将2009年11月10日,即该语言正式对外开源的日字作为其官方生日。
    • 源代码最初托管在http://code.google.com上,之后几年才逐步的迁移到GitHub 上。

04

【三】Go语言的版本

【1】概览

  • Go1.0 一2012年3月:
    • Go的第一个版本、带着一份兼容性说明文档来保证与未来发布版本的兼容性.进而不会破坏已有的程序。
  • Go 1.1 —2013年5月:
    • 这个Go版本专注于优化语言(编译器、gc、map、go调度器)和提升它的性能。
  • Go1.3一2014年6月:
    • 这个版本对栈管理做了重要的改进。栈可以申请l连续的内存片段.提高了分配的效率
  • Go 1.4-2014年12月:
    • 此版本带来了官方对 Android的支持、让我们可以只用Go代码就能写出简单的Android程序。
  • Go 1.7 -2016年8月:这个版本发布了context包,为用户提供了处理超时和任务取消的方法。
  • Go 1.11 -2018年8月:
    • Go 1.11带来了一个重要的新功能:Go modules。

【2】重要的发展节点

  • 2012年3月28日 go1 —— 稳定版版本的发布
  • 2015年8月19日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”---》自举
  • 2018年8月24日 go1.11 —— modules支持,摒弃掉go path的包管理
  • 2020 年 2 月 go 1.14— — 现在 Go Module 已经可以用于生产环境
  • 至今:1.17.6 开始支持泛型(需要额外操作)

【四】Go语言的特性

  • 跨平台的编译型语言(交叉编译)
  • 语法接近C语言
  • 管道(channel),切片(slice),并发(routine)--》线程池+协程
  • 有垃圾回收的机制(GC)
  • 支持面向对象和面向过程的编程模式
    • (继承,封装,多态)

【五】Go语言应用领域

  • 服务端开发

    • 高并发
  • 微服务方向

  • 区块链开发

    • 第一款开源的区块链软件是用go写的
  • 自动化运维

    • docker,k8s二开
  • 云平台

  • 各个互联网公司都会招go开发

  • 中小型公司跟风

  • 前景

    • 很广阔
  • 简单易学

标签:Ken,1.0,语言,Rob,引入,版本,Go,go
From: https://www.cnblogs.com/dream-ze/p/17825649.html

相关文章

  • 【4.0】Go语言语法基础之函数
    【一】函数基础【1】语法func关键字函数名(形参1形参1的类型,形参2形参2的类型)(返回值类型){函数体(函数体的内容和缩进无关,只要是在大括号内,都是函数体内容)}在Python中需要先定义函数再使用在Go中不需要先定义再使用funcmain(){}【2】无参数无返回值......
  • 【3.0】Go语言语法初识之变量
    【零】注释语法注释就是对代码的解释和说明,其目的就是让人们更加轻松的了解代码。注释是开发人员的一个重要的习惯。单行注释使用//开头多行注释使用/*开头*/结尾//package定义包名main包名packagemain//import引用库fmt库名import"fmt"//func定......
  • go.mod file not found in current directory or any parent directory; see 'go help
    go.modfilenotfoundincurrentdirectoryoranyparentdirectory;see'gohelpmodules'(exitstatus1)原因:目录少缺少 go.mod文件。解决方法:在终端中输入:gomodinitmain 其中main是模块名。 ......
  • GoKIT v2.1是一种基于云的物联网开发平台,旨在帮助开发者快速构建物联网应用程序。
    GoKITv2.1是一种基于云的物联网开发平台,旨在帮助开发者快速构建物联网应用程序。它提供了一组简单易用的工具和API,使开发者能够轻松地与各种类型的设备和传感器进行交互,并实时处理数据。GoKITv2.1的主要特点包括:设备管理:可以轻松管理连接到平台的设备,包括添加、删除和重新配置设......
  • Go中字符串处理:fmt.Sprintf与string.Builder的比较
    在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用fmt.Sprintf函数和string.Builder类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。1.fmt.Sprintffmt.Sprintf是一个函数,它根据提供的格式化字符串和参数列表,将它们格式化为一......
  • godot常用C#代码
    Godot常用C#代码注:本文记录的是我个人认为很常用但是容易忘记的C#代码。生成实例:生成实例的对象必须是PackedScene类型生成实例如果想用其它类型存储需要强制转换,即在变量名前括号加变量名,或用az强转代码示例:usingGodot;usingSystem;publicpartialclassworl......
  • The governance measures of marine oil pollution
    Thegovernancemeasures(1).Preventivemeasures.Preventionisoneofthemosteffectivecontrolmethods,includingthefollowingaspects:a.Strengtheningmonitorandcontrolsystem,improvingthesoundmonitoringsystem,andestabilishingthe real-time......
  • webgoat _v8.1全流程通关
    1.1(A1)SQLInjection(intro)概念 本课程介绍了什么是结构化查询语言(SQL),以及如何操纵它以执行开发人员原始意图之外的任务。 目标 用户将对SQL的工作原理和用途有基本的了解。 用户将对SQL注入有基本的了解,以及它们的工作原理。 用户将展示对以下内容的知识: ......
  • go语言命令行程序(CLI)开发工具小记
    Go语言领域,命令行程序占据比较重要的位置。因此,命令行程序的快速开发及工具选择就成为一个不可忽视的问题。本文简要总结使用Go语言开发命令行程序中常用的几个框架。一、CobraCobra是关于golang的一个命令行解析库,用它能够快速创建功能强大的cli应用程序和命令行工具。cobra......
  • 渗透学习1.1 信息收集之google hacking
    0x0前言  google是一款非常强大的搜索引擎,相对来说广告较少,查询结果全面,通常我们的使用方式是在搜索框输入想要查询的词汇,一般来说我们很容易搜索到想要的结果,但是Google也可以通过特定的语法对查询结果进行筛选,甚至可以对网页内容,文件,路径,建站模板等进行匹配,便于我们发现可......