Golang学习之路一开山篇

Golang学习之路一开山篇

初识 Golang

我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golang学习之路, 领导给了一周时间学习, 然后就在项目开发中边学习边开发。

我觉得一个好的程序员不可能只会一门语言, 要不断学习新技术提升自己,实现更大的价值.

刚开始用 Golang 这种静态语言之后,给我的编程思想带来了冲击和震撼,不夸张的说,有一种打开了另一扇窗的感觉。
Golang上手非常容易, 开发效率很高, 而且Golang性能非常好, 很容易的就能使程序拥有并发能力。像Java项目,不管是jar包或war包本身就有几十上百M, 运行起来占用内存也是上百M, 还需要安装jdk环境才能运行, 在256M内存想跑起来很困难. Golang就不一样, 编译出来的二进制特别小,就几M到十几M, 不需要安装任何环境,就可以运行起来, 在128M或256M的内存运行绰绰有余.

Golang简介

在这里插入图片描述

如图为Golang的logo

  • Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
  • Go语言是2007 年开发2009年发布的一款开源编程语言
  • Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
  • Go 是一种跨平台(Mac OS、Windows、Linux 等)静态编译型语言。拥有媲美 C 语言的强大性能,在普通计算机上能几秒内快速编译一个大项目,开发效率跟动态语言相差无几。
  • 很多开源项目都是使用 Go 语言开发的,其中包括 Docker、Etcd、Codis、Consul 和 Kubernetes。

Go大神

  • Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。这三个都是大神
  • 肯.汤姆逊(Ken Thompson):图灵奖(计算器界的诺贝尔奖)得主,Uinx发明人(Linux基于Uinx内核开发),B语言作者(C语言前身),还做飞行员,后来被谷歌挖走。
  • 罗布.派克(Rob Pike):Unix团队和Plan 9操作系统计划的成员,与Ken老爷子共事多年,并共创出广泛使用的UTF-8 字符编码。
  • 罗伯特.格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8
  • 膜拜一下大神的容颜:Ken老爷子(左),Rob Pike(右)

在这里插入图片描述

开发Go语言的初衷

  • 根据Go语言开发者自述,近10多年,从单机时代的C语言到现在互联网时代的Java,都没有令人满意的开发语言,而 C++往往给人的感觉是,花了100%的经历,却只有60%的开发效率,产出比太低,Java和C#的哲学又来源于C++。并且,随着硬件的不断升级,这些语言不能充分的利用硬件及CPU。
  • Go的主要目标是, 兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性
  • Go 语言的所有设计者都说,设计 Go 语言是因为 C++ 给他们带来了挫败感。
  • 在 Google I/O 2012 的 Go 见面会上,Rob Pike 是这样说的:我们做了大量的 C++ 开发,厌烦了等待编译完成,尽管这是玩笑,但在很大程度上来说也是事实。

Go语言特性

  • 静态编译(编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件,Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言:Go = C + Python , 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发)
  • 类型安全
  • 内存安全 (自动垃圾回收)
  • 编译速度快(构建一个程序的时间只需要数百毫秒)
  • 函数可以返回多个值
  • 反射
  • 网络编程、系统编程、并发编程、分布式编程。
  • 部署简单、并发性好、语言设计良好、执行性能好。

参考链接:
https://www.cnblogs.com/zhichaoma/p/12509268.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277816.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 防火墙管理及使用的redis基本常用命令

文章目录 防火墙管理使用systemctl管理防火墙启动、关闭使用firewalld-cmd配置访问防火墙策略firewalld配置文件修改限制来源IP docker使用 redis 防火墙管理 需要关闭防火墙或者开启对应端口 使用systemctl管理防火墙启动、关闭 启动防火墙: systemctl start fi…

03进程基础-学习笔记

Process 进程 进程为操作系统的基本调度单位,占用系统资源(cpu,内存)完成特定任务,所有说进程是操作系统的标准执行单元 进程与程序的差别 程序是静态资源,存储与电脑磁盘中(disk磁盘资源)程序执行后会创建进程,负责完成功能&a…

5.1 Linux SSH 服务

1、Telnet 传统的远程连接管理基本上都采用telnet,但是telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的&…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(四)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型(一) 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

jmeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下: {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件,配置如下: 若断言成功,则查看结果树的接口显示绿色,若…

【期末复习向】n元gram的应用

当 n 1 时, 即出现 在 第 i 位 上 的基 元 w i 独 立于 历 史 。 一元文法也 被 写 为 uni-gram 或 monogram; 当 n 2 时 , 2-gram ( bi-gram ) 被称 为 1 阶 马 尔 可夫 链; 当 n 3 时 , 3-gram( tri-gram ) 被称为 2 阶马尔 可 夫 链 &am…

平面腔体谐振计算与仿真

PCB的电源网络是由电介质材料隔开的两个平行金属板所组成,可以通过以下的3种方法对其谐振模式进行分析: 1. 基于腔体模型的计算; 2. 基于SPICE等效电路; 3. 基于全波数值电磁算法的3D模型。 设计得当的前提下,上述3种方…

win10上使用pyinstaller工具打包python后在win7无法运行(运行报错)

问题现象 win10中使用pyinstaller工具打包python为exe后,在win7上运行报错: 无法启动此程序,因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll。尝试重新安装该程序以解决此问题。或 无法启动此程序,因为计算机中丢失api-ms…

保障线程安全性:构建可靠的多线程应用

目录 引言 为什么线程安全性如此重要? 1. 竞态条件(Race Conditions) 2. 死锁(Deadlocks) 3. 数据竞争(Data Races) 4. 内存可见性(Memory Visibility) 面临的挑战…

vue3 使用antd 报错Uncaught TypeError--【已解决】

问题现象 使用最基本的 ant-design-vue 按钮demo 都报错 报错文字如下 Uncaught TypeError: Cannot read properties of undefined (reading value)at ReactiveEffect.fn (ant-design-vue.js?v597f5366:6693:87)at ReactiveEffect.run (chunk-K2VKR2AM.js?v25c381c3:461:…

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测 目录 分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.GASF-CNN格拉姆角场-卷积神经网络的数据分类预测(完整源码和数据) 2.自…

《数据结构、算法与应用C++语言描述》- 构建哈夫曼树

哈夫曼树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_29huffmanTree 定长编码与可变长编码 定长编码 每个字符都用固定长度的编码来表示。 例如假设一个文本是由字符 a、u、x 和 z 组成的字符串,每个字符用2位二进…