go语言特性

1、垃圾回收

  a、内存自动回收,再也不需要开发人员管理内存

  b、开发人员专注业务实现,降低了心智负担

  c、只需要new分配内存,不需要释放

2、天然并发

  a、从语言层面支持并发,非常简单

  b、goroute,轻量级线程,创建成千上万个goroute成为可能

  c、基于CSP(Communicating Sequential Process)模型实现

高并发示例

package main

import (
"fmt"
) func test_print(a int) {
fmt.Println(a)
} func main() {
for i := 0; i < 100; i++ {
go test_print(i)
}
}

3、channel

  a、管道,类似unix/linux中的pipe

  b、多个goroute之间通过channel进行通信

  c、支持任何类型

例一  

func main()  {
var pipe chan int
pipe = make(chan int, 3)
pipe <- 1
pipe <- 2
}

例二  

package main

import "fmt"

var pipe chan int	//声明变量

func add(a int, b int) int  {
sum := a + b
pipe <- sum
return sum
} func main() {
pipe = make(chan int, 1) //创建管道
go add(2,3)
sum :=<- pipe //等待pipe里有数据才继续执行
fmt.Println("sum =",sum)
}  

例三

package main

import "fmt"

func add(a int, b int, c chan int) int  {
sum := a + b
c <- sum
return sum
} func main() {
var pipe chan int
pipe = make(chan int, 1) //创建管道
go add(2,3, pipe)
sum :=<- pipe //等待pipe里有数据才继续执行
fmt.Println("sum =",sum)
}

  

注意:

var pipe chan int
pipe = make(chan int, 3)  

上面的代码跟下面的代码意思是一样的 

pipe := make(chan int, 3)

4、多返回值

  a、一个函数返回多个值  

package main

import "fmt"

func calc(a int, b int) (int,int)  {
c := a + b
d := (a + b)/2
return c, d
} func main() {
sum, _ := calc(2,4)
fmt.Println("sum=",sum)
}

包的概念

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

2、包可以被其它包引用

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

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

目录组织结构

一、文件名&关键字&标识符

1、所有go源码以.go结尾

2、标识符以字母或下划线开头,大小写敏感

3、_是特殊标识符,用来忽略结果

4、保留关键字

二、go程序的基本结构

package main

import "fmt"

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

1、任何一个代码文件隶属于一个包

2、import关键字,引用其他包

3、golang可执行程序,package main,并且有且只有一个main入口函数

4、包中函数调用:

  a.用一个包中函数,直接调用

  b.不同包中函数,通过包名+点+函数名进行调用

5、包访问控制规则:

  a.大写意味着这个函数/变量是可导出的

  b.小写意味着这个函数/变量是私有的,

    包外部不能访问

go学习day1的更多相关文章

  1. Python学习-day1

    Mark一下,python学习. 今天一天已1.5x的速度看完了Alex老师的第一周的视频,先是4节鸡汤课,而且给了勺,讲述了python目前在世界的地位,发展趋势,以及未来的愿景. 最重要的还是写一 ...

  2. python学习——DAY1

    日期:20170113 一.个人体会: 零基础学python,是艰辛的,需要付出和坚持. 关于流程图.我最开始画的是从上到下,再从左到右,画了很多重复的内容,单线程的流程图,看起来很容易理解,但是自己 ...

  3. python全栈学习--day1

      计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...

  4. python学习Day1 计算机原理编程思维

    一.学习思想:3W+1H   学什么(what).为什么学(why).用在哪里(where).怎么用(how) 学习编程语言重在代码量.代码量.代码量! 二.计算机五大组成部分,三大核心: 五大组成部 ...

  5. Python爬虫学习 - day1 - 爬取图片

    利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...

  6. 算法学习--Day1

    为了冲刺研究生初试,我准备在课余时间捡起往日的算法.多多练习算法题目,提前准备算法的机试. 今天是4月14日,距离算法考试还有两个月的时间吧,这两个月的所学所得我就都记录在这里了.不仅仅包括算法的准备 ...

  7. HTML学习----------DAY1 第三节

    本章通过实例向您演示最常用的 HTML 标签. 提示:不要担心本章中您还没有学过的例子,您将在下面的章节中学到它们. 提示:学习 HTML 最好的方式就是边学边做实验.我们为您准备了很好的 HTML ...

  8. HTML学习----------DAY1 第二节

    使用 Notepad 或 TextEdit 来编写 HTML 可以使用专业的 HTML 编辑器来编辑 HTML: Adobe Dreamweaver Microsoft Expression Web ...

  9. HTML学习----------DAY1 第一节

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...

  10. Linux学习Day1:开班第一天

    其实这篇博客应该昨天就要写完的,算是补作业吧. 昨天(2020年2月14日)是参加Linux线上培训的第一天,当天培训结束后,老师要求学员每天写一篇博客来记录自己学到的知识,于是就有了这篇博客的诞生. ...

随机推荐

  1. 苹果手机不兼容autoplay属性

    var audio=new Audio("music/music.mp3"); audio.preload="preload"; // 自动播放解决苹果不兼容a ...

  2. Ubuntu防火墙简单设置

    http://wiki.ubuntu.org.cn/UFW防火墙简单设置 http://wiki.ubuntu.org.cn/Ufw使用指南 Ubuntu默认安装内置ufw防火墙,简单使用如下: su ...

  3. js---通配符选择器

    原味转自:http://blog.sina.com.cn/s/blog_6e001be701017kaz.html 1.选择器 (1)通配符: $("input[id^='code']&qu ...

  4. LeetCode - Partition Labels

    A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...

  5. 芯灵思SinlinxA33开发板Linux内核定时器编程

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...

  6. KMPlayer速度步进设置及快捷键设置和同级视频自动加入播放列表

    速度步进设置 快捷键设置  同级视频自动加入播放列表

  7. 数学 它的内容,方法和意义 第二卷 (A. D. 亚历山大洛夫 著)

    第五章 常微分方程 1. 绪论 2. 常系数线性微分方程 3. 微分方程的解及应注意的几个方面 4. 微分方程积分问题的几何解释.问题的推广 5. 微分方程解的存在性与唯一性方程的近似解 6. 奇点 ...

  8. 转载:扒一扒Profiler中这几个“占坑鬼”

    https://blog.uwa4d.com/archives/presentandsync.html WaitForTargetFPS.Gfx.WaitForPresent 和 Graphics.P ...

  9. C# to IL 4 Keywords and Operators(关键字和操作符)

    Code that is placed after the return statement never gets executed. In the first programgiven below, ...

  10. 微软Azure通知中心 (Azure Notification Hubs)

    Azure Notification Hubs 提供简单的方法从后台(azure或者on-promise)去发送通知在不同的平台上面(iOS, Android, Windows, Kindle, Ba ...