Go-day01
Go-实现hello_world
package main
import "fmt"
func main() {
fmt.Println("hello world!")
}
GO-goroute并发
package main import (
"fmt"
"time"
) func test_goroute(a int ,b int){
sum := a + b
fmt.Println(sum)
} func main() {
for i := 0 ; i < 100 ; i ++ {
go test_goroute(200,100)
}
time.Sleep(2 *time.Second)
}
Go-管道channel
类似unix/linux的pipe
多个goroute之间通过channel通信
支持任何类型
func main(){
pipe := make(chan int,3) //chan 管道 3代表管道的大小
pipe <- 1
pipe <- 2
}
csp模型(Communication Sequential project) goroute+channel
全局变量也可以做,但是不建议使用
package main import (
"fmt"
//"time"
) func test_pipe(){
//创建一个大小为3的管道
pipe := make(chan int,3)
pipe <- 1
pipe <- 2
pipe <- 3
var t1 int
t1 = <- pipe //管道先进先出
pipe <- 4
fmt.Println(t1)
fmt.Println(len(pipe))
} func main() {
test_pipe()
//time.Sleep(1 *time.Second)
} /*
当放入的数据大于管道大小会编译的时候会产生死锁 fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan send]:
main.test_pipe()
C:/Users/liujiliang/PycharmProjects/firstgo/hello.go:14 +0xae
main.main()
C:/Users/liujiliang/PycharmProjects/firstgo/hello.go:19 +0x27
exit status 2
*/
gofmt
当出现代码格式特别乱 可以通过gofmt -w test.go
goroute&channel应用
当channel里没put值的时候,取管道数据默认会阻塞住
package main import "fmt"
import "time" var pipe chan int func add_sum(a int,b int ) {
sum := a + b
time.Sleep(3 * time.Second)
pipe <- sum } func main() {
pipe = make(chan int ,1)
go add_sum(1,2)
c :=<- pipe
fmt.Println("num=" ,c)
} // 3秒后打印3
Go的多返回值
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,avg := calc(10,5) //多个返回值
sum,_ := calc(100,200) //多个返回值 其中一个不用,采用下划线占位
//fmt.Println("sum=",sum,"avg=",avg)
fmt.Println("sum=",sum)
}
Go包的概念
Go的编码都是utf-8
1.和python一样,把相同功能的代码放到同一个目录,称之为包
2.包可以被其他包引用
3.main包是用来生成可执行文件,每个程序只有一个main包
4.包的主要用途是提高代码的可复用性
Go练习用goroute打印0-99
goroute和主线程一起运行
package main import (
"fmt"
"time"
) func test_goroute(a int){
fmt.Println(a)
} func main() {
for i := 0 ; i < 100 ; i ++ {
go test_goroute(i)
}
time.Sleep(3 *time.Second)
}
Go-day01的更多相关文章
- Jquery day01
day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...
- python Day01
Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...
- Spring day01笔记
struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少 --> [了解] sprin ...
- 传智播客JavaWeb day01 快捷键、XML
2015-01-14 一直计划着学习java,今天晚上终于下定决心看了下传智播客朴乾老师的javaweb开发视频day01之第一讲,主要内容是开发工具简单介绍.怎么创建工程.Junit的介绍,我是C# ...
- python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- coco2d学习day01 精灵分析
day01笔记 using namespace cocos2d; == USING_NS_CC; 一般用后面的 #ifndef __MYLAYER_H__ #define __MYLAYER_H__ ...
- day01课程回顾,数据类型
Day01 Python的分类 Cpython:代码àc字节码->机器码 一行一行的编译执行 Pypy: 代码àc字节码->机器码 全部转换完再执行 其他python 代码- ...
- Python学习之路——Day01
Day01 一.编程和编程语言 编程语言是人与计算机之间交流沟通的介质 编程就是人实现通过让计算机实现动作的文件 二.计算机的组成 1.控制器:负责控制指挥计算机硬件运行 2.运算器:负责数学与逻辑运 ...
- API.day01
第1部分 JDK API 1.1 API(Application Programming Interface,应用接口程序):已经封装好可以直接调用的功能(Java中以类的形式封装) 经常使用的JDK ...
- 《Professional JavaScript for Web Developers》day01
<professional JavaScript for Web Developers>day01 1.JavaScript简介 1.1JavaScript简史:略 1.2JavaScri ...
随机推荐
- 前端base64、baseurl加解密和RSA加解密
由于项目最近要进行安全测试,前端的用户和密码都是明文数据传送给后台那里,其实这样很很不安全的,容易泄露个人信息和密码.中间服务器的同事就提出,可以通过前端接收公钥,利用公钥对密码进行加密,把加密过密码 ...
- CodeCraft-19 and Codeforces Round #537 Div. 2
D:即有不超过52种物品,求容量为n/2的有序01背包方案数.容易想到设f[i][j]为前i种物品已用容量为j的方案数,有f[i][j]=f[i-1][j-a[i]]*C(n/2-j+a[i],a[i ...
- 关于工具类中@Autowired注入为NULL的问题记录
记录:在实体类中加入@Component注解和@Autowired注解时Service不能注入成功. @Component //把普通pojo实例化到spring容器中 0 public clas ...
- Ionic3在ts中获取html中值的方法
我觉得有两种方法,都是Angular中的语法,一种是把值当做参数传递,另一种是使用ngModel实现双向绑定 还有一种很少用到的,Js的原生方法:document.getElementById('ch ...
- 【Luogu3731】[HAOI2017]新型城市化(网络流,Tarjan)
[Luogu3731][HAOI2017]新型城市化(网络流,Tarjan) 题面 洛谷 给定一张反图,保证原图能分成不超过两个团,问有多少种加上一条边的方法,使得最大团的个数至少加上\(1\). 题 ...
- HDU 4549 M斐波那契数列(矩阵快速幂)
题目链接:M斐波那契数列 题意:$F[0]=a,F[1]=b,F[n]=F[n-1]*F[n-2]$.给定$a,b,n$,求$F[n]$. 题解:暴力打表后发现$ F[n]=a^{fib(n-1)} ...
- [模板] 动态dp
用途 对于某些树形dp(目前只会树上最大权独立集或者类似的),动态地修改点权,并询问修改后的dp值 做法(树剖版) 以最大权独立集为例 设$f[x][0/1]$表示x选不选,这棵子树的最大权独立集大小 ...
- [HNOI2010]物品调度
题目描述 现在找工作不容易,Lostmonkey费了好大劲才得到fsk公司基层流水线操作员的职位.流水线上有n个位置,从0到n-1依次编号,一开始0号位置空,其它的位置i上有编号为i的盒子.Lostm ...
- 20165223《JAVA程序设计》第一周学习总结
20165223 <JAVA程序设计>第一周学习总结 教材学习内容总结 通过网站JAVA第一章视频教程.教材.老师所给的教程及网上查询进行学习 第一章要点 JAVA地位和特点 地位:网络. ...
- jpa 原生查询createNativeQuery里面有冒号保留字关键字的问题
用\\:替换. 比如: String sql = "select location.ToString() a,version,location.STDistance(geometry\\:\ ...