初识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. 授权函数-web_set_user

    为Web服务器指定登录字符串.当我们使用RNS服务器或者某些服务器的时候需要我们输入账号密码登录才能给进行访问,那么这个时候就需要用到该函数 int web_set_user(const char* ...

  2. sql片段提取引用

    sql片段 sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的,如下: <!-- 传递pojo综合查询用户信息 --> <select id= ...

  3. controlfile的情景恢复

    控制文件测试 百度百科:控制文件(Control File)是Oracle的物理文件之一,它记录了数据库的名字.数据文件的位置等信息.控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机.如果没有数 ...

  4. Jupyter notebook常用命令合计

    shift + cr #运行该行并转入下一行 control + cr #运行该行 option + cr #运行该行并插入新行

  5. rust 代码生成选项

    Available codegen options: -C ar=val -- this option is deprecated and does nothing -C linker=val -- ...

  6. numpy中np.array()与np.asarray的区别以及.tolist

    array 和 asarray 都可以将 结构数据 转化为 ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输 ...

  7. Mysql表结构转成Oracle

    Navicat数据库连接工具

  8. 黎活明8天快速掌握android视频教程--12_文件的保存与读取

    1.当前是把文件保存当前手机的app的data目录下 我们来看看操作保存文件的业务类 package contract.test.savafileapplication; import android ...

  9. springMvc接口开发--对访问的restful api接口进行拦截实现功能扩展

    1.视频参加Spring Security开发安全的REST服务\PART1\PART1 3-7 使用切片拦截REST服务三通it学院-www.santongit.com-.mp4 讲的比较的经典,后 ...

  10. 06.DBUnit实际运用

    在上面的代码中 package com.fjnu.service; import java.io.FileWriter; import java.sql.SQLException; import st ...