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 ...
随机推荐
- The Xamarin Live Player Unpacked
It is 2017, and it is almost criminal to say that your app doesn't work on a given mobile platform. ...
- java excel Workbook API
此文摘自:http://blog.sina.com.cn/zenyunhai 1. int getNumberOfSheets() 获得工作薄(Workbook)中工作表(Sheet)的个数,示例: ...
- puppet的常用语法
检查语法错误 puppet parser validate xx.pp 在客户端测试但是不应用 puppet agent --test --noop 基于安全的考虑,使用预签名证书 puppet ce ...
- 浅析Android设备中grep命令处理流程
2017-04-18 概述 在TV开发板中,可以在串口中直接使用grep命令.这是因为在/system/bin/下有一个'grep'链接.这个链接指向'/system/bin/toolbo ...
- #195 game(动态规划+二分)
考虑第一问的部分分.显然设f[i]为i子树从根开始扩展的所需步数,考虑根节点的扩展顺序,显然应该按儿子子树所需步数从大到小进行扩展,将其排序即可. 要做到n=3e5,考虑换根dp.计算某点答案时先将其 ...
- eolinker——添加项目成员
https://help.eolinker.com/account/?target=/md/workspace/team 在工作空间的主页面,而不是接口的主页面这个一定要注意,邀请方式有两种,根据自己 ...
- Treasure Hunting HDU - 3468
题意: 输入一个n行m列的图 每次按字母顺序走最短路, 从一个字母走到下一个字母的过程中,只能拿走一个金子,求走完当前图中所有的字母后能拿到的金子的最大值 解析: bfs求最短路 对于一个金子如果 d ...
- swagger2 如何匹配多个controller
方法一:使用多个controller的共同拥有的父类,即精确到两个controller的上一级 @Bean public Docket createRestApi() { return new Doc ...
- Android 可展开列表组件 ExpandableListView
ExpandableListView 是ListView的子类,它把应用中的列表项分为几组,每组里可包含多个列表项. 所显示的列表项应该由ExpandableListAdapter 接口提供,实现Ex ...
- 【BZOJ5417】[NOI2018]你的名字(线段树,后缀自动机)
[BZOJ5417][NOI2018]你的名字(线段树,后缀自动机) 题面 BZOJ 洛谷 题解 首先考虑\(l=1,r=|S|\)的做法,对于每次询问的\(T\)串,暴力在\(S\)串的\(SAM\ ...