go学习day1
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的更多相关文章
- Python学习-day1
Mark一下,python学习. 今天一天已1.5x的速度看完了Alex老师的第一周的视频,先是4节鸡汤课,而且给了勺,讲述了python目前在世界的地位,发展趋势,以及未来的愿景. 最重要的还是写一 ...
- python学习——DAY1
日期:20170113 一.个人体会: 零基础学python,是艰辛的,需要付出和坚持. 关于流程图.我最开始画的是从上到下,再从左到右,画了很多重复的内容,单线程的流程图,看起来很容易理解,但是自己 ...
- python全栈学习--day1
计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...
- python学习Day1 计算机原理编程思维
一.学习思想:3W+1H 学什么(what).为什么学(why).用在哪里(where).怎么用(how) 学习编程语言重在代码量.代码量.代码量! 二.计算机五大组成部分,三大核心: 五大组成部 ...
- Python爬虫学习 - day1 - 爬取图片
利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...
- 算法学习--Day1
为了冲刺研究生初试,我准备在课余时间捡起往日的算法.多多练习算法题目,提前准备算法的机试. 今天是4月14日,距离算法考试还有两个月的时间吧,这两个月的所学所得我就都记录在这里了.不仅仅包括算法的准备 ...
- HTML学习----------DAY1 第三节
本章通过实例向您演示最常用的 HTML 标签. 提示:不要担心本章中您还没有学过的例子,您将在下面的章节中学到它们. 提示:学习 HTML 最好的方式就是边学边做实验.我们为您准备了很好的 HTML ...
- HTML学习----------DAY1 第二节
使用 Notepad 或 TextEdit 来编写 HTML 可以使用专业的 HTML 编辑器来编辑 HTML: Adobe Dreamweaver Microsoft Expression Web ...
- HTML学习----------DAY1 第一节
什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...
- Linux学习Day1:开班第一天
其实这篇博客应该昨天就要写完的,算是补作业吧. 昨天(2020年2月14日)是参加Linux线上培训的第一天,当天培训结束后,老师要求学员每天写一篇博客来记录自己学到的知识,于是就有了这篇博客的诞生. ...
随机推荐
- HDU 6015 Skip the Class 优先队列 map的使用
Skip the Class Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- django cookie与session组件
本文目录 1 会话跟踪技术 2 cookie介绍 Django中操作Cookie Session Django中Session相关方法 Django中的Session配置 CBV中加装饰器 回到目录 ...
- mvc core2.1 Identity.EntityFramework Core 用户Claims查看(七)
添加角色属性查看 Views ->Shared->_Layout.cshtml <div class="navbar-collapse collapse"> ...
- acm 2005
////////////////////////////////////////////////////////////////////////////////#include<iostream ...
- GinKgoCTF-Misc
一:谁动了我的校徽? Jpg改txt——>寻找——>GKCTF{This_is_a_huaji} 二:奇怪的压缩包1 六位数字的密码一点也不安全!!!!!! 下载压缩包——>有密码( ...
- 【BZOJ3672】【UOJ#6】【NOI2014】随机数生成器
暴力出奇迹 原题: 2≤N,M≤5000 0≤Q≤50000 0≤a≤300 0≤b,c≤108 0≤x0<d≤108 1≤ui,vi≤N×M 恩首先容易看出来这个棋盘直接模拟搞出来就行了,不用 ...
- day 06云计算的三种服务模式:IaaS,PaaS和SaaS
云计算的三种服务模式:IaaS,PaaS和SaaS ”云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. “云”其实是互联 ...
- java中的ArrayList 、List、LinkedList、Collection
原文地址: http://www.cnblogs.com/liqiu/p/3302607.html 一.基础介绍(Set.List.Map) Set(集):集合中的元素不按特定方式排序,并且没有重复对 ...
- java BIO/NIO
一.BIO Blocking IO(即阻塞IO); 1. 特点: a) Socket服务端在监听过程中每次accept到一个客户端的Socket连接,就要处理这个请求,而此时其他连接过来 ...
- 创建表时,主键 USING BTREE、USING HASH 的含义(待补充)
PRIMARY KEY (`id`) USING BTREE