1. Go语言—初始
一、golang语言特性
1. 垃圾回收
- 内存自动回收,再也不需要开发人员管理内存
- 开发人员专注业务实现,降低了心智负担
- 只需要new分配内存,不需要释放
2. 天然并发
- 从语言层面支持并发,非常简单
- goroutine,轻量级线程,创建成千上万个goroutine成为可能
- 基于CSP(Communicating Sequential Process)模型实现 [goroutine + pipe]
package main
func test_goroute(a int, b int) int {
var test_sum int
test_sum = a + b
return test_sum
}
func main(){
go test_goroute(1,2)
}
package main
import "fmt"
func test_goroute(a int) {
fmt.Println(a)
}
func main() {
for i := 1; i < 100; i++ {
go test_goroute(i)
}
}
3. 管道
- 管道,类似linux中的pipe
- 多个goroutine之间通过channel进行通信
- 支持任何类型
func main() {
// make开辟一个内存,chan为长度为3整型管道
pipe := make(chan int, 3)
// 向管道填值
pipe <- 2
pipe <- 2
pipe <- 2
fmt.Println(len(pipe))
var t int
// 取值
t =<- pipe
fmt.Println(t)
}
// 通过管道求和
package main
import (
"time"
"fmt"
)
func add(a int, b int, c chan int) {
sum := a + b
time.Sleep(3*time.Second)
c <- sum
}
func main() {
var pipe chan int
pipe = make(chan int, 1)
go add(1,2,pipe)
sum := <- pipe
fmt.Println(sum)
}
4. 多返回值
- 一个函数返回多个值
func calc(a int, b int) (int, int){
sum := a + b
avg := (a+b)/2
return sum, avg
}
1. Go语言—初始的更多相关文章
- Go从入门到精通(一)go语言初始
一.第一个go程序 package main import ( "fmt" ) func main(){ fmt.Println("hello world") ...
- [转]Asp.Net 网站多语言解决方案
本文转自:https://www.cnblogs.com/FredTang/archive/2013/01/23/2873231.html 最近领导要求实现PMSWeb应用程序的多区域语言的支持,所以 ...
- 07. Go 语言接口
Go 语言接口 接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具 ...
- Dart 语言简述
Dart是一种“结构化的web编程”语言,Dart编程语言在所有现代浏览器和环境中提供高性能.Dart是谷歌开发的计算机编程语言,后来被ECMA认定为标准. Dart重要的概念: 1.所有的东西都是对 ...
- U-BOOT 移植到友善之臂mini2440
U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...
- Markdown 版本演进
本文作为 Markdown 系列的第二篇,对上一篇使用 Markdown 写技术博客,我踩过的 6个坑博客提到的版本变迁进行简要的提纲说明. 如果不想读文章,请直接看思维导图,使用 Atom + ma ...
- Django使用DataTables插件总结
Django使用Datatables插件总结 文章中的例子已上传至github 基本使用 Datatables插件是一款方便简单的展示数据的列表插件.关于基本使用,官方网站上的已介绍的很详细,这里我再 ...
- 初始数据结构(python语言)
数据结构 概念:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 算法复杂度 时间复杂度 时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法 ...
- 初始C语言中的指针(翁凯男神MOOC)
运算符 & ● scanf("%d",&i); ●获得变量的地址,它的操作数必须是变量 ● int i; printf("%x",& ...
随机推荐
- 使用 TSPITR 恢复删除的表空间的步骤 (Doc ID 1277795.1)
Steps To Recover A Dropped Tablespace Using TSPITR (Doc ID 1277795.1) APPLIES TO: Oracle Database - ...
- [Go] go中的goto语句跳到指定标签
比如下面的语句goto TOP ,其中TOP就是自己的自定义的标签,下面的TOP:就是要执行的代码段一般用在需要两层循环的地方,里面goto再跳回上面去 ; i < ; i++ { { goto ...
- 004 C/C++ 数据类型_类型别名
#include "stdio.h" #include "stdlib.h" //这里定义了一个结构体. struct MyStruct1 { int a; f ...
- 201871020225-牟星源 《面向对象程序设计(java)》第一周学习总结
正文 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daiz ...
- Django 缓存 cache基本使用
1.设置setting REDIS_HOST = '10.133.3.26' REDIS_POST = 6379 REDIS_DATABASE = 3 REDIS_PASSWORD = '' CACH ...
- acwing 55. 连续子数组的最大和
地址 https://www.acwing.com/problem/content/50/ 输入一个 非空 整型数组,数组里的数可能为正,也可能为负. 数组中一个或连续的多个整数组成一个子数组. 求 ...
- 关于group by的用法 原理
转载: https://blog.csdn.net/u014717572/article/details/80687042. 写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉grou ...
- matlab练习程序(克莱姆法则解方程)
<线性代数>同济第五版第一章最后一节的内容,我都差点忘记了,在这里写个简单的例子记录一下. matlab代码如下: clear all; close all; clc; % A*x = b ...
- AutoCAD配置的Heidi驱动程序未加载
电脑安装的软件越来越多,有的软件也就偶尔使用一下下,于是就找了一个绿化版的AutoCAD,挺好的,可启动时弹出"配置的Heidi驱动程序未加载.切换到默认软件驱动程序". 对于上述 ...
- 发布Jar包到中央仓库
参考流程 https://blog.csdn.net/qq_36838191/article/details/81027586 备份还原 gpg-keys https://blog.rathena.c ...