思想
Less can be more 大道至简,小而蕴真 让事情变得复杂很容易,让事情变得简单才难 深刻的工程文化
优点
自带gc。
静态编译,编译好后,扔服务器直接运行。
简单的思想,没有继承,多态,类等。
丰富的库和详细的开发文档。
语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性。
超级简单的交叉编译,仅需更改环境变量。
Go 语言是谷歌 2009 年首次推出并在 2012 年正式发布的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去10多年间软件开发的难度令人沮丧。Google 对 Go 寄予厚望,其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助开发者处理琐碎但重要的内存管理问题。Go 的速度也非常快,几乎和 C 或 C++ 程序一样快,且能够快速开发应用程序。
Go语言的主要特征:
Go语言(也称为Golang)具有许多主要特征,这些特征使它在软件开发领域备受欢迎。以下是Go语言的主要特征:
- 简单易学:Go语言的语法相对简单,学习曲线平缓。这使得新手程序员可以很快上手,并且不需要花费太多时间来掌握语言的基础知识。
- 并发支持:Go语言原生支持并发编程,通过goroutine和channel等机制,开发者可以轻松编写并发程序。这使得Go语言非常适合处理高并发的任务,如网络服务器。
- 开发效率高:尽管Go是一门编译型语言,但它内置了垃圾回收机制,降低了开发者的心智负担,使其拥有像解释性语言一样的开发效率。开发者可以更专注于解决问题,而不必过多担心内存管理等细节。
- 强大的标准库:Go语言提供了丰富的标准库,包括网络、系统、加密、编码、图形等各个方面。这些库使得开发者能够快速构建各种类型的应用程序,而无需从头开始编写所有功能。
- 静态类型:Go是一种静态类型语言,这意味着在编译时会进行类型检查,可以帮助开发者在编码过程中捕获潜在的类型错误,提高了代码的稳定性和可维护性。
- 开源和跨平台:Go语言是一个开源项目,可以在多个操作系统上运行,包括Windows、Linux、macOS等。这使得它成为一个跨平台的编程语言。
- 高性能:Go语言的编译速度快,运行效率高。它通常比一些传统的编程语言(如Java和C++)更快,同时具有较低的内存消耗。
- 内存管理:Go语言的垃圾回收机制自动管理内存,减轻了开发者的负担,使程序更健壮且不容易出现内存泄漏问题。
- 静态链接:Go语言的可执行文件通常是静态链接的,这意味着您可以轻松地将应用程序部署到其他机器上,而无需担心依赖问题。
总的来说,Go语言的主要特征包括简单易学、并发支持、高开发效率、强大的标准库、静态类型、开源跨平台、高性能、内存管理和静态链接等,这些特性使其成为一门流行的编程语言,特别适用于构建高性能和可维护性强的应用程序。
Go语言命名:
在Go语言中,命名规范非常重要,良好的命名可以提高代码的可读性和可维护性。以下是Go语言中常见的命名规范:
-
包名(Package Names):
- 包名应该是简洁而有描述性的,通常采用小写字母,不使用下划线。
- 避免使用与标准库中已有的包重名。
-
变量名(Variable Names):
- 变量名应该使用驼峰式命名法(CamelCase),例如:myVariable。
- 变量名应该具有描述性,能够清晰地表示其用途。
- 全局变量应该避免使用短命名,以免与局部变量混淆。
-
常量名(Constant Names):
- 常量名通常采用全大写字母,用下划线分隔单词,例如:MAX_VALUE。
- 常量名也应该具有描述性,清晰表达其含义。
-
函数名(Function Names):
- 函数名采用驼峰式命名法,例如:calculateSum()。
- 函数名应该具有描述性,清晰地表达函数的功能。
-
类型名(Type Names):
- 类型名也采用驼峰式命名法,例如:MyStruct。
- 类型名应该具有描述性,清晰地表示其类型的用途。
-
接口名(Interface Names):
- 接口名通常以"-er"结尾,例如:Reader、Writer。
- 接口名应该简洁而有描述性,清晰表达接口的用途。
-
文件名(File Names):
- 文件名通常使用小写字母,不使用驼峰式。
- 如果一个包包含多个文件,它们的文件名应该一致,以确保包的一致性。
-
命名缩写(Naming Abbreviations):
- 避免使用过度缩写,以确保代码可读性。
- 通常只有常见的缩写才能使用,如HTTP、URL等。
-
可见性(Visibility):
- Go语言中没有public和private等关键字,可见性是通过字母大小写来控制的。大写字母开头的标识符可被其他包访问,小写字母开头的标识符只能在当前包内使用。
遵循这些命名规范可以帮助您编写清晰、可维护的Go代码,并与Go社区的约定保持一致。良好的命名习惯有助于提高代码的可读性,减少歧义,并使团队合作更加顺畅。
Go语言声明:
有四种主要声明方式: 1.变量声明(var):
var age int // 声明一个整数类型的变量 age
var name string // 声明一个字符串类型的变量 name
var isStudent bool // 声明一个布尔类型的变量 isStudent
2.常量声明(const):
const pi = 3.1415926 // 声明一个常量 pi,并初始化为3.1415926
const gravity = 9.81 // 声明一个常量 gravity,并初始化为9.81
3.类型声明(type):
type Celsius float64 // 声明一个新类型 Celsius,它是 float64 的别名
type ID int // 声明一个新类型 ID,它是 int 的别名
4.函数声明(func):
func add(a, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("Hello, " + name)
}
Go的程序是保存在多个.go文件中,文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明。
Go项目构建及编译
1: 建立工程文件夹 goproject
2: 在工程文件夹中建立src,pkg,bin文件夹
3: 在GOPATH中添加projiect路径 例 e:/goproject
4: 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例 examplepackage
5:在src文件夹下编写主程序代码代码 goproject.go
6:在examplepackage文件夹中编写 examplepackage.go 和 包测试文件 examplepackage_test.go
7:编译调试包
go build examplepackage
go test examplepackage
go install examplepackage
这时在pkg文件夹中可以发现会有一个相应的操作系统文件夹如windows_386z, 在这个文件夹中会有examplepackage文件夹,在该文件中有examplepackage.a文件
8:编译主程序
go build goproject.go
成功后会生成goproject.exe文件
至此一个Go工程编辑成功。
go 编译问题
golang的编译使用命令 go build , go install;除非仅写一个main函数,否则还是准备好目录结构; GOPATH=工程根目录;其下应创建src,pkg,bin目录,bin目录中用于生成可执行文件,pkg目录中用于生成.a文件; golang中的import name,实际是到GOPATH中去寻找name.a, 使用时是该name.a的源码中生命的package 名字;这个在前面已经介绍过了。