golang语言特征

第一个go程序

//1)go语言以包作为管理单位

//2)每个文件必须先声明包

//3)程序必须有一个main包

 

package main

 

import "fmt"

 

func main(){//左括号必须和函数名同行

//调用函数,大部分都需要导入包

//hello go打印到屏幕会自动换行

fmt.Println("hello go")

}

 

golang语言特性

1.垃圾回收

a.内存自动回收,不需要开发人员管理内存

b 只需要new分配内存,不需要释放

2.天然并发

a 从语言层面支持并发,非常简单

b goroute,轻量级线程,创建成千上万个goroute成为可能

c 基于CSP模型

例:

package main

import

"fmt"

 

func add(a int,b int)int{

    var sum int

    sum = a + b

    return sum

}

func test(a int)int{

    fmt.Println(a)

    return 0

}

func main(){    

    c :=add(100,200)//自动定义变量

    for i:=0;i<100;i++{

        go test(i)//并发执行,相当于fork(),所以打印的数字是乱的

    }

 

    fmt.Println("c=",c)

}

结果;

 

3. channel

a 管道,类似unix/linux中的pipe

b 多个goroute之间通过channel进行通信

c 支持任何类型

例:

package main

import(

    "fmt"

)

func main(){

    pipe := make(chan int,3)//定义一个大小为3的管道,管道类似于队列,先进先出,一头进一头出

    pipe <- 1//向管道中添加元素,其中的符号像一个箭头

    pipe <- 2

    pipe <- 3

    var b int

    b =<- pipe//取出管道中的一个元素,由先进先出,取出的元素为1

    pipe <- 4//将4放入管道

    fmt.Println(b)

    fmt.Println(len(pipe))//打印管道的长度

}

附加:

在终端中使用gofmt -w [文件名]可使代码对齐

例:

func main() {

    pipe := make(chan int, 3) //定义一个大小为3的管道,管道类似于队列,先进先出,一头进一头出

    pipe <- 1 //向管道中添加元素,其中的符号像一个箭头

     pipe <- 2

     pipe <- 3

    var b int

     b = <-pipe //取出管道中的一个元素,由先进先出,取出的元素为1

    pipe <- 4 //将4放入管道

     fmt.Println(b)

    fmt.Println(len(pipe)) //打印管道的长度

}

在终端使用命令后:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值