加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

go语言的特性

发布时间:2020-12-16 09:32:07 所属栏目:大数据 来源:网络整理
导读:一、golang语言特性 ?1. 垃圾回收 a、内存自动回收,再也不需要开发人员管理内存? //开发代码中不能存在无引用的变量,不然代码出错 b、开发人员专注业务实现,降低了心智负担 c、只需要new分配内存,不需要释放 2. 天然并发 a、从语言层面支持并发,非常简

一、golang语言特性

?1. 垃圾回收

a、内存自动回收,再也不需要开发人员管理内存? //开发代码中不能存在无引用的变量,不然代码出错

b、开发人员专注业务实现,降低了心智负担

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

2. 天然并发

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

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

c、基于CSP(Communicating Sequential Process)模型实现(基于goroute、channel)

并发实例:

不需要担心编码问题,全是utf-8

:=? 相当于变量的声明和赋值

在go名称中不建议使用下划线 _

//单行注释

/*?? */多行注释

go? fmt -w filename?? 格式化代码文件(排版)

goroutine

?3. channel(管道,进程间的通信)

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

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

c、支持任何类型

func main() {
  pipe := make(chan int,3)  //make  分配内存空间
  pipe <- 1                 //向管道里面扔数值
  pipe <- 2 // len(pipe) 管道的长度
t1 =<- pipe //取管道里面的数据 
}

管道的传值:

main/main.go

View Code

goroute/add.go

View Code

4. 多返回值

  一个函数返回多个值

main/main.go

package main
import(
    "go_dev/day1/package_example/calc"  //调用其他包,路径根据GOPANTH不用写src,直接从src目录下开始
"fmt" ) func main() { sum,_ := calc.Add(100,300) //接收返回值得一个,_没有值,打印报错 fmt.Println("sum=",sum) }

calc/Add.go

package calc
func Add(a int,b int) (int,int) { return a + b,a - b
}

二、包的概念

1、和python一样,把相同功能的代码放到一个目录,称之为包

2、包可以被其他包引用(包内的变量名必须是大写开头,才能被其他包调用)

3、main包是用来生成可执行文件,每个程序只有一个main包

4、包的主要用途是提高代码的可复用性

?

三、包的编译

?建立如下目录结构:

将project添加到GOPATH的环境变量中

然后在PROJECT下编译代码:

go? build?? godev/day1????? //因为添加了GOPATH环境变量,能直接找到src文件,所以不用写src,直接编译包含main包的库就是了。

go build? -o ?bin/day1.exe?? godev/day1?????// 将编译文件保存在PROJECT/bin下,并制定编译后的文件名

编译完成后,会生成day1.exe文件,.day1.exe执行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读