一、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语言—初始的更多相关文章

  1. Go从入门到精通(一)go语言初始

    一.第一个go程序 package main import ( "fmt" ) func main(){ fmt.Println("hello world") ...

  2. [转]Asp.Net 网站多语言解决方案

    本文转自:https://www.cnblogs.com/FredTang/archive/2013/01/23/2873231.html 最近领导要求实现PMSWeb应用程序的多区域语言的支持,所以 ...

  3. 07. Go 语言接口

    Go 语言接口 接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具 ...

  4. Dart 语言简述

    Dart是一种“结构化的web编程”语言,Dart编程语言在所有现代浏览器和环境中提供高性能.Dart是谷歌开发的计算机编程语言,后来被ECMA认定为标准. Dart重要的概念: 1.所有的东西都是对 ...

  5. U-BOOT 移植到友善之臂mini2440

    U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...

  6. Markdown 版本演进

    本文作为 Markdown 系列的第二篇,对上一篇使用 Markdown 写技术博客,我踩过的 6个坑博客提到的版本变迁进行简要的提纲说明. 如果不想读文章,请直接看思维导图,使用 Atom + ma ...

  7. Django使用DataTables插件总结

    Django使用Datatables插件总结 文章中的例子已上传至github 基本使用 Datatables插件是一款方便简单的展示数据的列表插件.关于基本使用,官方网站上的已介绍的很详细,这里我再 ...

  8. 初始数据结构(python语言)

    数据结构 概念:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 算法复杂度 时间复杂度 时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法 ...

  9. 初始C语言中的指针(翁凯男神MOOC)

      运算符  & ● scanf("%d",&i); ●获得变量的地址,它的操作数必须是变量 ● int i; printf("%x",& ...

随机推荐

  1. SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货

    CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(MAX))  RETURNS @ResultTab ...

  2. .deb 包如何安装到指定目录; Ubuntu; Debian like;

    有时候,我们没有root用户的时候,我们进行安装deb包就不能之间安装到系统之中了: 为了方便,我们可以直接解压 dpkg -x same.deb .; 直接解压到当前目录,然后在配置环境变量,即可启 ...

  3. JAVA学习路线,实战开发

     Java基础课程内容包含:Java开发介绍.Java数组.Java面向对象.常用基础类.集合.IO流.多线程.异常.反射.  第一部分:Java开发介绍  1. DOS常用命令  2. JVM.JR ...

  4. R基础绘图

    本节内容 0:小知识 1:绘图系统散点图的特征 2:基础绘图函数 3:基础绘图参数 4:图形设备 5:案例操作5个图形 0:小知识 summary() ## 对数据框或者向量进行描述性数据 read. ...

  5. 【2019.10.7 CCF-CSP-2019模拟赛 T3】未知的数组(unknown)(并查集+动态规划)

    预处理 考虑模数\(10\)是合数不好做,所以我们可以用一个常用套路: \(\prod_{i=l}^ra_i\equiv x(mod\ 10)\)的方案数等于\(\prod_{i=l}^ra_i\eq ...

  6. [ Python入门教程 ] Python字典数据类型及基本操作

    字典是Python中重要的数据类型,字典是由"键-值"对组成的集合,"键-值"对之间用逗号隔开,包含在一对花括号中.字典中的"值"通过&qu ...

  7. C#开发BIMFACE系列20 服务端API之获取模型数据5:批量获取构件属性

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性>中介绍了获取单个文件/模型的单个构建的属性,本篇介绍 ...

  8. 策略路由PBR(不含track)

    策略路由:是一种依据用户制定的策略进行路由选择的机制.(公义)在特定数据进入路由表前,对其进行操控的方式.(本人定义) 根据作用对象的不同,策略路由可分为本地策略路由和接口策略路由: · 本地策略路由 ...

  9. vue中template的作用及使用

     先来看一个需求:下图div用v-for做了列表循环,现在想要span也一起循环,应该怎么做? 有3种方法可以实现 ①:直接用v-for对span也循环一次(该方法虽然可以使用,但不要用这种方式,因为 ...

  10. C++ 类的前向声明的用法

    我们知道C++的类应当是先定义,然后使用.但在处理相对复杂的问题.考虑类的组合时,很可能遇到俩个类相互引用的情况,这种情况称为循环依赖. 例如: class A { public: void f(B ...