go语言的特性
一、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?? 格式化代码文件(排版) ?3. channel(管道,进程间的通信) a、管道,类似unix/linux中的pipe b、多个goroute之间通过channel进行通信 c、支持任何类型 func main() {
pipe := make(chan int,3) //make 分配内存空间
pipe <- 1 //向管道里面扔数值
pipe <- 2 // len(pipe) 管道的长度
管道的传值: main/main.go goroute/add.go 4. 多返回值 一个函数返回多个值 main/main.go package main
import(
"go_dev/day1/package_example/calc" //调用其他包,路径根据GOPANTH不用写src,直接从src目录下开始
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执行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |