Golang发展历史

1. 诞生历史
a. 诞生与2006年1月2号下午15点4分5秒
b. 2009发布并正式开源
c. 2012年第一个正式版本Go 1.0发布
d. 截至到2017年8月24号Go 1.9版本正式

GO环境搭建

1. Go安装

a. 打开Golang官网, https://golang.org/dl/
b. 选择window安装包进行下载
c. 双击安装

https://github.com/pingguoxueyuan/gostudy/tree/master/listen1

2. Git 工具安装

a. 有效的、分布式的代码管理工具
b. 下载地址:https://git-scm.com/downloads
c. 点击安装包进行安装

3. IDE搭建(vscode)

a. 打开⽹址:https://code.visualstudio.com/
b. 根据操作系统选择对应的安装包
c. 点击安装包进⾏安装(linux直接解压)
d. 选择查看-》扩展-》搜索go,安装第2个

4. GOPATH设置

a. GOPATH是一个环境变量,用来表明go项目的存放路径

b. GOPATH路径最好只设置一个,所有的项目都放到GOPATH的src目录下

c. GOPATH的目录结构介绍

第一个程序

package main

import "fmt"

func main(){
fmt.Println("hello world")
}

包的概念

1. 和python一样,把相同功能的代码放到同一个目录,称之为包
2. 包可以被其他包引用
3. main包是用来生成可执行文件,每个程序只有一个main包
4. 包的主要用途是提高代码的可复用性

GO 命令的基本介绍

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

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

GO 程序结构

GOPATH 目录下

a. go源码按package进行组织,并且package要放到非注释的第一行

b. 一个可执行程序只有一个main包和一个main函数

c. main函数是程序的执行入口

注释

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

GO 语言的特性

1. 垃圾回收

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

2. 天然并发

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

模板

func calc() {
//⼤量计算
}
func main() {
go calc()
}

举例

1.串行

package main

import "fmt"
import "time" func aa(){
for i:=; i<=;i++{
time.Sleep(*time.Second)
fmt.Println("执行", i , "次")
}
fmt.Println("aa is ok")
} func main(){
aa()
fmt.Println("主函数执行完了")
}

结果

使用go 实现"并发"

package main

import "fmt"
import "time" func aa(){
for i:=; i<=;i++{
time.Sleep(*time.Second)
fmt.Println("执行", i , "次")
}
fmt.Println("aa is ok")
} func main(){
go aa() // 只需要加上 go就可以了
fmt.Println("主函数执行完了")
time.Sleep(*time.Second)
}

结果

3. channel

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

4. 多返回值

a. 一个函数返回多个值

返回一个值

package main

import "fmt"

func add(a int, b int) int {
return a + b
} func main(){
sum := add(, )
fmt.Println(sum)
}

返回多个值

package main

import "fmt"

func add(a int, b int) int {
return a + b
} func aa(a int, b int) (int, int) {
return a +b , a-b
} func main(){
sum := add(, )
he, cha := aa(, )
fmt.Println(sum)
fmt.Println(he, cha)
}

5. 编译性语言

1.性能只比c差10%

2. 开发效率和python, php差不多

go语言基本介绍的更多相关文章

  1. Velocity语言的介绍

    Velocity语言的介绍 2016-09-06 15:39:25 语言介绍 Velocity是一种Java模版引擎技术,是一个基于Java的模板引擎(template engine).她允许任何人简 ...

  2. 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输

    002-PHP基础-01-PHP快速入门 02-PHP语言相关介绍 1.PHP是什么 Hypertext Preprocessor超文本预处理器 是一种通用开源脚本语言 Personal Home P ...

  3. Cocos2d-x 脚本语言Lua介绍

    Cocos2d-x 脚本语言Lua介绍 本篇博客记录Lua学习.学习来自eoe论坛,Lua语言开发Cocos2d-x游戏入门视频教程,猛戳下面地址: http://www.eoeandroid.com ...

  4. 一、Go语言开篇介绍

    Go语言开篇介绍 Go语言 是Google公司 在2007开发一种静态强类型.编译型语言,并在 2009 年正式对外发布. Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度 ...

  5. Lua语言的介绍和编程语言的归类

    Lua 本条目介绍的是一种编程语言.关于关于Lua在维基百科中的使用,请见"维基百科:Lua".关于"Lua"一词的其他意思,请见"卢阿". ...

  6. Scheme语言--简单介绍

    一年前事实上有时间看完SICP这本书,后来由于种种原因,一直没有继续再学.由于SICP中使用Scheme确实应用不多.在Java,C++的语言眼里,Scheme确实非常另类.现在MIT已经放弃了使用S ...

  7. Java语言的介绍

    1. 计算机语言 语言:沟通交流的方式 计算机语言:人与计算机之间的交流方式 java是一门计算机编程语言,也是意大利自行车品牌 软件工程师,java开发工程师 <--------------- ...

  8. REST建模语言RAML介绍

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   RAML是什么?   RAML是一种简洁的RESTful API描述性语言,它基于 YAML和JSON这样的公 ...

  9. 这是啥-Cython语言简单介绍

    Cython是一种既可以编写c又可以编写python的编程语言,他的目标是成为一个python语言的超集,为python提供高层次的.面向对象的.函数化.动态编程功能.不同于纯粹的python,它提供 ...

随机推荐

  1. 【Python】Python对象类型及其运算

    Python对象类型及其运算 基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = ...

  2. Arrays.toString 如果传入的是对象 那么调用的是此对象的toString

    Arrays.toString(Object[] obj) 如果传入参数的是对象 那么调用的是此对象的toString

  3. Eclipse 保存代码时,不自动换行设置

    Eclipse在保存代码时,总是自动换行.尤其是注释,换行后的注释读起来就很混乱.后来发现是在保存文件时设置了自动格式化代码的原因. 关闭自动格式代码设置: windows-->Preferen ...

  4. 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...

  5. 【BZOJ4197】【NOI2015】寿司晚宴(动态规划)

    [BZOJ4197][NOI2015]寿司晚宴(动态规划) 题面 BZOJ 从\([2,n]\)中选择两个集合(可以为空集),使得两个集合中各选一个数出来,都互质. 求方案数. 题解 对于\(500\ ...

  6. Wifi密码破解实战

    原文链接地址:http://www.freebuf.com/articles/wireless/127261.html https://www.baidu.com/?tn=98012088_4_dg& ...

  7. 【bzoj4543】Hotel加强版(thr)

    Portal --> bzoj4543 Solution ​ 一年前的题== 然而一年前我大概是在划水qwq ​​ 其实感觉好像关键是..设一个好的状态?然后..你要用一种十分优秀的方式快乐转移 ...

  8. LOJ #6035.「雅礼集训 2017 Day4」洗衣服 贪心

    这道题的贪心好迷啊~我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结 ...

  9. 使用OpenCV进行标定(转载)

    转载自牛猫靖  http://www.cnblogs.com/2008nmj/p/6278076.html 使用OpenCV进行相机标定 1. 使用OpenCV进行标定 相机已经有很长一段历史了.但是 ...

  10. 树莓派apt-get下载网速太慢

    因为学校有ipv6的原因,当我想用ipv4的时候用apt-get发现特别慢.找了很久终于找到了解决方案: Add -o Acquire::ForceIPv4=true when running apt ...