初识Go

Go简介

Go的历史

  1. 上个世纪70年代Ken Thompson和Dennis M. Ritchie合作发明了UNIX操作系统同时Dennis M. Ritchie发明了C语言。
  2. 2007年的Robert Griesemer,Rob Pike和Ken。 Thompson三位大牛在Google公司开始编写和设计Go语言。
  3. 2009年Go正式宣布推出,版本1.0在2012年3月发布。
  4. 版本1.5 新 GC 算法,实现并发标记和清理,增加控制器和辅助回收等
  5. 版本1.11 实验性启用版本和依赖管理 Modules,替代 GOPATH

Go的优缺点

  1. 优点
  • 简单高效,Go继承了C语言,但是语法更加简洁,可以直接编译成二进制文件执行,内置虚拟机运行速度快。
  • 并发支持好,Go独特的使用CSP并发模型,简单来说就是“不要以共享内存的方式来通信,相反,要通过通信来共享内存。”
  • 静态语言编译时有类型检测,同时提供动态语言的特性,例如支持匿名函数和闭包。
  • 内置强大的工具可以帮助开发人员编写的代码可读性和维护性更高。
  • 强大的社区和生态系统
  1. 缺点
  • 错误处理,如果有错误,Go需要函数返回错误。可能导致错误跟踪丢失和缺少有用的错误处理逻辑。
  • 包管理,Go的包管理不完善,虽然Go 1.11版本加入了go mod解决一直存在的依赖管理的短板,但是一些老项目支持并不好

Go应用的领域

Go经过十几年的发展,已经广泛的用于各大公司和项目中,比较著名的项目如Docker、Consul、Kubernetes等

Go的环境搭建

Go 支持Linux FreeBSD Windows Mac系统。

  1. 下载

安装包的下载地址 https://golang.org/dl/ 打不开可以访问 https://golang.google.cn/dl/

  1. Windows安装

打开下载页面,选择最新版本

下载完成,双击.msi文件安装一路选择Next直到安装完成。

  1. Mac OS安装

打开下载页面,选择最新版本

下载完成,双击.pkg文件安装一路选择Next直到安装完成

  1. 验证安装

Windows下打开cmd窗口(win 键+ R,输入 cmd 回车),在cmd窗口中输入go命令回车后,显示如下结果:

第一个Go程序

在上面cmd窗口显示的目录中创建test.go文件,用文本编辑器打开,写入下面的代码

package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}

然后在cmd窗口中执行

go run test.go

返回如下所示:

Go开发工具

Go的开发工具很多,推荐用的比较多的是:

  • Visual Studio Code 微软开源的免费代码编辑器,需要安装Go插件。
  • GoLand GoLand是一个独立的IDE,专门用来开发Go功能十分强大,学生可以申请免费使用。

Visual Studio Code安装

打开 https://code.visualstudio.com/ 网站,下载安装Visual Studio Code,打开选择扩展搜索Go:

Go的100天之旅-01初识Go的更多相关文章

  1. TensorFlow --- 01初识

    由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识

  2. day24 01 初识继承

    day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...

  3. day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  4. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  5. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  6. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  7. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  8. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  9. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

随机推荐

  1. (十)深入理解maven构建生命周期和各种plugin插件

    链接:https://blog.csdn.net/zhaojianting/article/details/80321488

  2. MyBatis 实体类属性与表字段不一致

    原文链接:https://blog.csdn.net/zx48822821/java/article/details/79050735 因为数据库一般设置为表的字段不区分大小写,所以数据库中表的字段通 ...

  3. python学习日记2019.9.2

    1 定义一个字符串对象str str.title() #将字符串中用空格分隔的字符段首字母大写 str.rstrip() #将字符串末的空格删去 str.strip() #将字符串首末的空格删去 st ...

  4. python基础内容整理(一)

    基本数据类型 字符串 String 字符串是不可变类型 字符串的分割: s.split(sep)以给定的sep为分隔符对s进行分割. In [4]: s = "hello world&quo ...

  5. excel筛选重复项代码

    Sub test()'updateby Extendoffice 20151030    Dim xRng As Range    Dim xTxt As String    On Error Res ...

  6. Python 分布式缓存之Reids数据类型操作

    目录 1.Redis API 2.String 操作 3.Hash 操作 4.List 操作 1.Redis API 1.操作模式 redis-py提供两个类Redis和StrictRedis用于实现 ...

  7. java多线程并发执行demo,主线程阻塞

    其中有四个知识点我单独罗列了出来,属于多线程编程中需要知道的知识: 知识点1:X,T为泛型,为什么要用泛型,泛型和Object的区别请看:https://www.cnblogs.com/xiaoxio ...

  8. mybatis源码配置文件解析之五:解析mappers标签

    在上篇博客中分析了plugins标签,<mybatis源码配置文件解析之四:解析plugins标签>,了解了其使用方式及背后的原理.现在来分析<mappers>标签. 一.概述 ...

  9. Java面向对象(一)类和对象

    面向过程和面向对象的区别 面向过程,强调的是功能行为,是将实现一个功能的步骤编写在一个函数中,以函数为最小单位. 面向对象,是将需要的功能封装进一个对象中,使一个对象具有很多的功能特征,以类/对象为最 ...

  10. 生日聚会Party——这个线性dp有点嚣张

    题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算 坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续 ...