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 build xxx/main -o /bin/test #生成go文件到bin下
go 编译,有main函数的话 编译后是可执行文件,没有main函数 编译后是lib库
 
 

Go-day01的更多相关文章

  1. Jquery day01

    day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...

  2. python Day01

    Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...

  3. Spring day01笔记

    struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少 --> [了解]   sprin ...

  4. 传智播客JavaWeb day01 快捷键、XML

    2015-01-14 一直计划着学习java,今天晚上终于下定决心看了下传智播客朴乾老师的javaweb开发视频day01之第一讲,主要内容是开发工具简单介绍.怎么创建工程.Junit的介绍,我是C# ...

  5. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  6. coco2d学习day01 精灵分析

    day01笔记 using namespace cocos2d; == USING_NS_CC; 一般用后面的 #ifndef __MYLAYER_H__ #define __MYLAYER_H__ ...

  7. day01课程回顾,数据类型

    Day01 Python的分类 Cpython:代码àc字节码->机器码   一行一行的编译执行 Pypy:   代码àc字节码->机器码   全部转换完再执行 其他python  代码- ...

  8. Python学习之路——Day01

    Day01 一.编程和编程语言 编程语言是人与计算机之间交流沟通的介质 编程就是人实现通过让计算机实现动作的文件 二.计算机的组成 1.控制器:负责控制指挥计算机硬件运行 2.运算器:负责数学与逻辑运 ...

  9. API.day01

    第1部分 JDK API 1.1 API(Application Programming Interface,应用接口程序):已经封装好可以直接调用的功能(Java中以类的形式封装) 经常使用的JDK ...

  10. 《Professional JavaScript for Web Developers》day01

    <professional JavaScript for Web Developers>day01 1.JavaScript简介 1.1JavaScript简史:略 1.2JavaScri ...

随机推荐

  1. jQuery代码优化的9种方法

    前面的话 本文将详细介绍jQuery代码优化的9种方法 用对选择器 在jQuery中,可以用多种选择器,选择同一个网页元素.每种选择器的性能是不一样的,应该了解它们的性能差异 1.最快的选择器:id选 ...

  2. 11.ingress服务

    kubernetes  的service服务我们提到过.service 可以用nodePort的方式和调用公有云LBAAS服务 来对于集群外的client提供服务访问,但是service是工作的osi ...

  3. hibernate主配置文件中指定session与当前线程绑定

    配置一条属性 <property name="hibernate.current_session_context_class">thread</property& ...

  4. codeforces285C

    Building Permutation CodeForces - 285C Permutation p is an ordered set of integers p1,  p2,  ...,  p ...

  5. 微信小程序 canvas 字体自动换行(支持换行符)

    微信小程序 canvas 自动适配 自动换行,保存图片分享到朋友圈  https://github.com/richard1015/News 微信IDE演示代码https://developers.w ...

  6. linux-内核参数优化参考指标

    民间最全的Linux系统内核参数调优说   相信做运维的同仁,进行运维环境初建时,必须要考虑到操作系统内核参数的优化问题,本人经历数次的运维环境重建后,决定要自行收集一份比较完善的系统内核参数优化说明 ...

  7. window文件过长无法删除的处理方式

    解决方案: 如:aaa是要删除的文件夹,进入到要删除的文件夹下,新建一个test  1.以管理员身份打开CMD:  2 新建test空白目录:  3 执行命令,删除aaa文件夹:robocopy te ...

  8. python学习日记(函数基础)

    修改文件(原理)--回顾 #修改文件(原理) with open('name','r',encoding='utf-8') as f,\ open('password','w+',encoding=' ...

  9. Linux 检查端口gps命令

    由于是游戏业务,环境主要是Nginx+Tomcat+Java Program gps脚本环境以及效果图如下: #!/bin/bash function Printf (){ == ];then pri ...

  10. 【linux】vim常用操作及vim插件的安装使用

    vim是linux下一个非常好用的文本编辑器,在linux下开发的人员要熟练掌握vim常用命令. 1.  打开在第n行 vim +143 filename.txt 2. 只读模式打开 vim -R / ...