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 ...
随机推荐
- mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序
近段时间接到一个新需求: 第一优先级:未满的标的顺位高于已满标的顺位.第二优先级:新手标的顺位高于其他标的的顺位. 第三优先级:标的剩余可投金额少的顺位高于标的剩余可投金额多的. 我是直接通过sql语 ...
- Editor markdown编辑器
代码示例网址:http://pandao.github.io/editor.md/examples/index.html 引入文件 <link rel="stylesheet" ...
- IntelliJ cannot log in to GitHub上传github报错解决
重装系统,新装的Intellij IDEA上新建的项目上传github失败,报错: invalid authentication token ... 此处多为本地git用户的用户名/邮箱,与之前设置的 ...
- 欧拉筛法模板&&P3383 【模板】线性筛素数
我们先来看欧拉筛法 •为什么叫欧拉筛呢?这可能是跟欧拉有关 •但是为什么叫线性筛呢?因为它的复杂度是线性的,也就是O(n),我们直接来看代码 #include<cstdio> #inc ...
- Codeforces 768B B. Code For 1
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6423483.html B. Code For 1 time limit per test:2 se ...
- Sorting It All Out POJ - 1094 拓扑排序
题意:给N个字母,和M个偏序关系 求一个可确定的全序,可确定是指没有其他的可能例如A>B D>B 那么有ADB DAB两种,这就是不可确定的其中,M个偏序关系可以看做是一个一个按时间给出的 ...
- 听大佬学长RQY报告有感
听了RQY大佬的报告,我深有感触…… 数学基础很重要.首先我们要学好数学,众所周知信息学奥赛的实质是做数学题.如果你的编程能力再高,绞尽脑汁就是不会解数学题那有什么用呢?如果你会解数学题,那么你可以根 ...
- Linux qemu-nbd mount qemu disk image
Linux qemu-nbd mount qemu disk image deepin@deepin:~$ deepin@deepin:~$ qemu-nbd --help Usage: qemu-n ...
- Mysql 数据备份导出
mysqldump导出整个数据库mysqldump --single-transaction --skip-lock-tables -uDBUSER -pDBPASSWD -hDBIP \--defa ...
- 【Tsinsen A1339】JZPLCM (树状数组)
Description 原题链接 给定一长度为\(~n~\)的正整数序列\(~a~\),有\(~q~\)次询问,每次询问一段区间内所有数的\(~LCM~\)(即最小公倍数).由于答案可能很大,输出 ...