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 格式化代码文件(排版)
package main import(
"time"
"fmt"
) func test_goroute(a int) {
fmt.Println(a)
} func main() { for i := 0; i < 100; i++ {
go test_goroute(i)
} time.Sleep(time.Second)
}
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
package main import(
"go_dev/day1/goroute_example/goroute"
"fmt"
) func main() {
var pipe chan int
pipe = make(chan int, 1)
go goroute.Add(100, 300, pipe) sum := <- pipe
fmt.Println("sum=", sum)
}
goroute/add.go
package goroute
func Add(a int, b int, c chan int) {
sum := a +b
c <- sum
}
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执行

go语言的特性的更多相关文章
- 前端学习 第三弹: JavaScript语言的特性与发展
前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...
- (转)C++0x语言新特性一览
转自:http://blog.csdn.net/zwvista/article/details/2429781 原文请见http://en.wikipedia.org/wiki/C%2B%2B0x. ...
- 理解C#系列 / C#语言的特性
C#语言的特性 大多数语句都已(;)结尾 用({})定义语句块 单行注释(//),多行注释(/*......*/)智能注释(///) 区分大小写 用namespace名称空间对类进行分类 在C#中的所 ...
- Objective-C 语言特点/特性
Objective-C中 1.所有的类都必须继承自NSObject. 2.所有对象都是指针的形式. 3.用self代替this. 4.使用id代替void*. 5.使用nil表示NULL, 6.只支持 ...
- Atitit.dart语言的特性 编译时js语言大总结
Atitit.dart语言的特性 编译时js语言大总结 1. 原型环境1 1.1. Dart可以编译js3 2. 第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时 ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
- iOS - Swift Swift 语言新特性
1.Swift 2.0 带来哪些新变化 常规变化: 1.OS X 10.11.iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, ...
- 当OOP语言RAII特性发展到functional形式的极致
本文主要站在C++程序员的思维角度思量. functional之路 lambda表达式 lambda表达式,是一段代码片段.函数实现体中出现的可重用的代码块. 在C++之前,C语言最小可复用流程模块, ...
- delphi2006语言新特性:Record类型高级用法
delphi语言在传统的Records类型的基础上增加了许多像类一样的高级功能,如:Records可以有属性和方法(包括构造constructors),类属性,类方法,类静态字段和内嵌类型.下面这个示 ...
- OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力. 在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 ...
随机推荐
- CB9328是一颗PA+LNA+Switch三合一的FEM 兼容S*8112Q
近日,工信部无线电管理局发布了<超宽带(UWB)设备无线电管理规定(征求意见稿)>(以下简称"新版<规定>").根据新版<规定>,未来国内UWB ...
- kubernetes:v1.25 + containerd
由于kubernets从v1.24开始停止支持dockershim,kubernets不再支持通过docker来创建和管理容器.本文记录安装kubernetes v1.25 + containerd ...
- 记录POI导入时单元格下拉框两种实现方式(excel数据有效性)
如果下拉选项字符少于225 使用方式1 public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, in ...
- 【笔记】Win7连接公司内网无法打开网页
win7尝试使用VPN连接公司内网发现无法打开单点登录网页 DNS解析没问题 服务器也能ping通 查了半天才发现是MTU的问题 win7的默认值1400 公司的华为设备设置的比这个值小 要根据具体的 ...
- (Fiddler)Fiddler 的相关操作
Fiddler 的几个常用操作: 1. Statistics:会话信息统计 1)选择当前页面的第一个请求和最后一个请求,通过计算 statistics,就知道该页面总共的耗时时间. 2)查出当前页面耗 ...
- Jmeter 命令执行脚本并输出报告
Jmeter 可以通过cmd 命令执行脚本,并输出报告 执行顺序如下: 第一 进入 安装的jmeter bin 目录下:(我安装的是E盘)
- C2驾驶车型
凡是自动挡的9座(包括9座)以下,车长6米以内的小型载客汽车(包含轿车.SUV.MPV):以及总质量在4500KG(包括4500KG)以下的.车长在6米(包括6米)以下的.核定载重质量在1500KG( ...
- python之路5:常用模块
模块简介 time & datetime模块 random os sys shutil json & pickle shelve xml处理 configparser hashlib ...
- win7安装AutoCAD2019
1.Win7专业版64位先安装SP1补丁 2.根证书下载 MicrosoftRootCertificateAuthority2011.cer 链接:http://go.microsoft.com/fw ...
- sos 扩展命令文档
https://learn.microsoft.com/zh-cn/dotnet/framework/tools/sos-dll-sos-debugging-extension?redirectedf ...