一、go发展历史

1.1诞生历史

1、诞生于2006年1月下午15点4分5秒

2、2009发布并正式开园

3、2012年第一个正式版本Go1.0发布

4、截止2019年10月8日,Go1.13.1

1.2发展情况

二、开发环境搭建

2.1GO安装

1、打开https://golang.org/dl/

2、下载对应操作系统

3、安装

1、windows双击安装

2、linux编译安装

mkdir -p /var/opt/wwwroot/goblog
配置环境变量 vim /etc/profile
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=/var/opt/wwwroot/goblin
source /etc/profile
安装结束,验证 go version go调试
dlv debug --headless --listen=: --api-version=

2.3git安装

1、下载

https://git-scm.com/downloads

2、安装

window双击安装

linux

$ yum install git
$ yum install git-svn git-email gitk

2.3IDE(GoLand)

1、安装过程不再重复(详见pycharm安装)直接上验证

注意:配置环境变量

三、Golang目录结构介绍

3.1目录结构划分

3.2目录结构划分二

三、第一个golang程序

// 属于那个包,package包名和函数对应一一对应
package main // 导入包
import (
"fmt"
) func main() {
// 打印fmt.Println
fmt.Println("hello world")
// 睡眠时间
// time.Sleep(time.Second*10)
}

四、包的概念

1、和python⼀一样,把相同功能的代码放到⼀一个⽬目录,称之为包

2、 包可以被其他包引⽤用

3、 main包是⽤用来⽣生成可执⾏行行⽂文件,每个程序只有⼀一个main包

4、 包的主要⽤用途是提⾼高代码的可复⽤用性

五、Go 基本命令介绍

1、基本命令

a. go run 快速执⾏行行go⽂文件,就像执⾏行行脚本⼀一样
b. go build 编译程序,⽣生成⼆二进制可执⾏行行⽂文件
c. go install 安装可执⾏行行⽂文件到bin⽬目录

2、 基本命令

a. go test 执⾏行行单元测试或压⼒力力测试
b. go env 显示go相关的环境变量量
c. go fmt 格式化源代码

3、 Go程序结构

b. ⼀一个可执⾏行行程序只有⼀一个main包和⼀一个main函数
c. main函数是程序的执⾏行行⼊入⼝口
a. go源码按package进⾏行行组织,并且package要放到⾮非注释的第⼀一⾏行行

4、注释

b. 多⾏行行注释 /* */
a. 单⾏行行注释 //

六、golang语言特性

1、 垃圾回收

a. 内存⾃自动回收,再也不不需要开发⼈人员管理理内存
b. 开发⼈人员专注业务实现,降低了了⼼心智负担
c. 只需要new分配内存,不不需要释放

2、天然并发

a. 从语⾔言层⾯面⽀支持并发,⾮非常简单。只需要go⼀一下
b. goroutine,轻量量级线程,创建成千上万个goroute成为可能

func calc() {
//⼤大量量计算

}
func main() {
go calc()

}

3、channel

a. 管道,类似unix/linux中的pipe
b. 多个goroute之间通过channel进⾏行行通信
c. ⽀支持任何类型

4、 多返回值

a. ⼀一个函数返回多个值

5、 编译型语⾔言

【原创】go语言学习(一)的更多相关文章

  1. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. 12天学好C语言——记录我的C语言学习之路(Day 12)

    12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...

  3. 12天学好C语言——记录我的C语言学习之路(Day 11)

    12天学好C语言--记录我的C语言学习之路 Day 11: 因为指针部分比较的难,所以我们花费的时间也是最长的,希望大家耐的住性子,多多理解,多多打代码.好了,废话不多说,来看第11天的学习. //编 ...

  4. 12天学好C语言——记录我的C语言学习之路(Day 10)

    12天学好C语言--记录我的C语言学习之路 Day 10: 接着昨天的指针部分学习,有这么一个题目: //还是四个学生,四门成绩,只要有学生一门功课没及格就输出这个学生的所有成绩 /*//progra ...

  5. 12天学好C语言——记录我的C语言学习之路(Day 9)

    12天学好C语言--记录我的C语言学习之路 Day 9: 函数部分告一段落,但是我们并不是把函数完全放下,因为函数无处不在,我们今后的程序仍然会大量运用到函数 //转入指针部分的学习,了解指针是什么 ...

  6. 12天学好C语言——记录我的C语言学习之路(Day 8)

    12天学好C语言--记录我的C语言学习之路 Day 8: 从今天开始,我们获得了C语言中很有力的一个工具,那就是函数.函数的魅力不仅于此,一个程序到最后都是由众多函数组成的,我们一定要用好函数,用熟练 ...

  7. 12天学好C语言——记录我的C语言学习之路(Day 7)

    12天学好C语言--记录我的C语言学习之路 Day 7: 昨天进行了一天的数组学习,今天大家可以先写几个昨天的程序热热身,回顾回顾,然后今天第一个新程序也是关于数组的,比较难,准备好就开始啦! //输 ...

  8. 12天学好C语言——记录我的C语言学习之路(Day 6)

    12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n;   scanf("%d,& ...

  9. 12天学好C语言——记录我的C语言学习之路(Day 5)

    12天学好C语言--记录我的C语言学习之路 Day 5: 第五天的学习开始了,今天我们主要对几个程序进行编写,让自己充分的熟练编程语言,大量的题目会让自己变的精炼.以一个程序(program 5.1) ...

  10. 12天学好C语言——记录我的C语言学习之路(Day 4)

    12天学好C语言--记录我的C语言学习之路 Day 4: 首先来看一段程序: //输出下面4*5的矩阵 /* 1  2  3   4   5 2  4  6   8   10 3  6  9   12 ...

随机推荐

  1. PAT-1003 Emergency (25 分) 最短路最大点权+求相同cost最短路的数量

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  2. 在论坛中出现的比较难的sql问题:3(row_number函数 分组查询)

    原文:在论坛中出现的比较难的sql问题:3(row_number函数 分组查询) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...

  3. VS2019打开项目加载失败:无法找到 .NET Core SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配。

    问题描述: 用VS2019创建了asp.net core项目,正常运行:过几天后,再次打开,发现无法加载项目,报错无法找到.net core sdk.   分析过程: 首先怀疑环境变量的问题,重新设置 ...

  4. OutOfRangeError的解决办法

    自制TFRecord数据集,训练神经网络出现的一个问题,及解决办法.   错误现象: 数据训练完成后,测试数据集正确率时,运行mnist_test.py文件,出现错误代码 问题分析:显示需测试数据10 ...

  5. struct 和class到底有什么区别

    我们知道struct是C语言的宠儿,当需要一个复杂类型的时候就需要定义一个struct 比如一个学生结构体,含有三个属性,分别是编号.名字和年龄. typedef struct Student { i ...

  6. ECharts雷达图详细配置说明

    雷达图表配置说明: // 指定图表的配置项和数据 var option = { backgroundColor: 'rgba(204,204,204,0.7 )', // 背景色,默认无背景 rgba ...

  7. Viewer.js的inline模式

    开始 前几天接到一个小的支持,要做一个有图像预览和操作功能的demo,并且给出了参照的模板.刚开始简单的看了一下给的模板,一个是boxImg.js,另一个是Viewer.js. 问题 其实图片预览的插 ...

  8. fastadmin 中 a标签跳转

    <a class="btn-addtabs" href="/入口文件/模块/控制器"></a>

  9. 怎么制作电脑系统安装U盘?

    现如今U盘安装电脑系统已经是非常普遍的一种方式,这种方式简单好用,能应对大多数情况,受到很多用户的欢迎. 雨后清风U盘启动是一款可将普通U盘制作为系统引导启动工具的软件,其制作的U盘启动盘融合了雨后清 ...

  10. vi/vim常用按键

    最近这段时间坚持了vim的使用,我在我的IDEA里面加了一个插件,可以支持vim. 然后不管是IDEA还是Vim都有自己的按键,而且都很好用,所以我就总结下在IDEA下的vim使用命令 当然,都是原生 ...