Go语言是Google的大牛们发明的一门新语言,2012年3月28日正式对外发布。去年7月份我第一次接触到Go语言,从此就喜欢上了它。本来这门语言是为C/C++程序员准备的,但是貌似更多的是Python程序员在学习和使用。
Go语言的主要特性有:
- 自动垃圾回收
- 丰富的内置语言类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
Hello world
hello.go
package main import "fmt" //需要使用fmt包中的Println()函数 func main(){ fmt.Println("Hello world") }
运行
有两种方式运行
//解释执行 >go run hello.go //编译执行 go build hello.go hello.exe
代码解读
1.每个Go的源代码开头都是一个package的声明,表示该Go代码所属的包。要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个main()的函数,该函数不带参数,也没有返回值。
2. import用来导入程序中需要的包,如果导入的包没有被使用,Go的编译器会报错,支持相对路径和绝对路径。
3.Go的函数结构为:
func 函数名(参数列表)(返回值){ //函数结构体 } 如: func T(value1 int, value2 string)(result int, er error){ //.... }
函数以func开头,参数类型在参数的后面,如果有返回值在参数后面列出,强制左花括号必须在函数定义的第一行。
4.注释支持
/* 块注释 */ //行注释
变量
Go语言的变量声明和C/C++有明显的区别,它引入了关键字var,而且类型信息是放在变量名后面的。
变量的声明 var v1 int var v2 string var v3 [10] int //数组 var v4 [] int //数组切片 var v5 struct{ f int } var v6 int //指针 var v7 map[string]int var v8 func(a int)int 变量的初始化 var v1 int = 10 var v2 = 10 //编译器可以自动推导出v2的类型 var := 10 //编译器可以自动推到处v3的类型 := 不需要var来声明,一步到位,如果已经被声明,就不能使用这个符号了,否则会报错(no new variables on left side of :=) 变量赋值 var v10 int声明后,可以赋值 v10 = 10 多重赋值 i,j = j,i //无需加入中间变量 匿名变量 有的时候,我们需要获取函数返回的某一个值,却因为该函数返回多个值而定义许多没用的变量,从而导致不够优雅,Go有效的解决了这个问题,对于不用的变量,可以使用_来代替。 例如: func getName()(furstname,lastname,nickname){ return "David","Yang","D" } 如果只想获得第一个变量,可以这样来写代码 name,_,_ := getName()
常量
常量是指编译期间就已知并且不可改变的值,可以是数值类型(包括整型,浮点型,复数类型),布尔类型,字符串类型等。
const Pi = float64 = 3.14159275358979 const zero = 0.0 const ( size int64 = 1024 eof = -1 ) const a,b,c = 3,4,"foo" 常量赋值必须保证右边的值在编译期间运算的常量表达式,如果在运行期间才知道返回结果,在编译器内并不能保证,就会导致编译错误。 预定义常量 预定义了true,false和iota iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在洗衣歌const出现之前,没出现一次,其代表的数字就会自动增1. const( c1 = iota //c1==0 c2 = iota //c2==1 c3 = iota //c3==2 ) const x = iota //x==0 const y = iota //y==0
类型
Go语言内置了一下类型
- 布尔bool (不能接受其他类型的赋值,不支持自动或者强制的类型转换)
- 整形int8,byte,int16,int,uint,uintptr等(int和int32会认为是不同的类型,不能直接比较,编译器不会做强转)
- 浮点float32,float64(float32相当于C语言的float,float64相当于double)
- 复数complex64,complex128 (value = 3.2 + 12i)
- 字符串string (Go 语言仅支持UTF-8和Unicode)
- 字符rune
- 错误error
此外,还有一些复合类型
- 指针
- 数组
- 切片
- 字典
- 通道
- 结构体
- 接口
字符串遍历
以字节数组的方式遍历 package main import ( "fmt" ) func main(){ str := "hello,世界" //每个汉字在UTF-8中占3个字节 n := len(str) for i := 0; i < n; i++ { ch := str[i] fmt.Println(i, ch) } } 输出: 0 104 1 101 2 108 3 108 4 111 5 44 6 228 7 184 8 150 9 231 10 149 11 140 以Unicode字符遍历 package main import ( "fmt" ) func main(){ str := "hello,世界" for i,ch := range str { //ch的类型为rune fmt.Println(i,ch) } } 0 104 1 101 2 108 3 108 4 111 5 44 6 19990 9 30028 以unicode字符方式遍历时,每个字符的类型是rune(早期的Go语言使用int类型表示Unicode字符),而不是byte.Go语言中支持两个字符类型,一个是byte(是unit8的别名),代表UTF-8字符串的单个字节的值;另一个是rune,代表单个Unicode的字符。出于简化语言的考虑,Go语言的多数API都假设字符串为UTF-8。
相关推荐
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。自2009年发布以来,Go语言因其简洁、高效的语法和强大的并发处理能力,逐渐在云计算、微服务、容器等领域获得了广泛...
Go语言,又称为Golang,是由Google公司开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它由Robert Griesemer、Rob Pike及Ken Thompson三位开发者设计,旨在提高软件的构建效率和可维护性,特别...
Go 语言,也被称为 Golang,是由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年设计的一种静态类型的编程语言。它旨在提供高效的开发体验,同时保持简洁的语法和内置的并发支持。Go 语言在...
Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分:Go语言基础、标准库和扩展库...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。Go语言的设计目标是提高程序员的工作效率,它具有高表达力、简洁、清晰和高效的特性。Go语言的一个显著特点...
go语言开发项目go语言开发项目go语言开发项目go语言开发项目go语言开发项目 go语言开发项目go语言开发项目go语言开发项目go语言开发项目go语言开发项目 go语言开发项目go语言开发项目go语言开发项目go语言开发项目go...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。它旨在提高编程效率,简化并发编程,并强调简洁的编程哲学。Go语言的设计受到了多门经典编程语言的影响,如C语言、...
Go 语言是由 Google 开发的一种静态类型、编译型、并发型、垃圾回收的编程语言,于 2009 年正式对外发布。Go 语言的设计目标是兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性。 Go 语言的...
Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、并发型且垃圾回收的编程语言。它设计简洁、效率高,特别适合于编写服务器端和网络应用。Go语言的语法接近C语言,但同时也引入了诸如goroutine(轻...
Go语言,也被称为Golang,是由Google公司于2007年设计并推出的开源编程语言。它的设计目标是简洁、高效和可并发。Go语言以其快速编译、垃圾回收、C-like语法和内置并发机制而受到开发者们的喜爱,尤其在云计算和...
Go语言是一种开源编程语言,具有简单易学、高性能、跨平台等特性,目前已经成为构建高效、可靠的应用程序的重要选择。Go语言在计算机编程领域的重要性不断提升,特别是在云平台、分布式系统和并发处理等领域。为了...
Go语言,又称为Golang,是由Google公司推出的编程语言。其主要开发者包括肯·汤姆逊(Ken Thompson)、罗布·派克(Rob Pike)和罗伯特·格里泽默(Robert Griesemer)三位业界知名的大师级人物。以下是这三位开发者的简要...
Go 语言,也被称为 Golang,是由 Google 在 2009 年推出的开源编程语言。设计时,它旨在提供高效的开发环境、简洁的语法、并发支持以及强大的工具链,使其成为开发网络服务、分布式系统和微服务的理想选择。本文将...
中下载适合你系统的Go语言包,选择 .msi 安装包下载即可。 安装 Go 语言包 双击下载的安装包,按照提示进行安装。 配置环境变量 在环境变量中添加 Go 语言的路径,如 C:\Go\bin。这样,你就可以在任意目录下运行 ...
Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。自2009年发布以来,Go语言因其简洁的语法、高效的性能以及对并发编程的良好支持,受到了广大开发者的欢迎...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言,因其高效性能和简洁的语法而受到广大开发者喜爱。在后端开发领域,Go语言以其强大的并发处理能力而独树一帜,这...
在本资源包中,我们关注的是"Go语言项目实战源码资料",这是一份针对Go(也称为Golang)编程语言的实践性学习材料,特别适用于那些希望通过实际项目提升Go语言技能的开发者。"Go语言项目实战-up视频源码"意味着这份...
Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、强类型编程语言。它旨在提高开发效率,简化系统编程,并且特别适合构建网络服务和大规模分布式系统。Go语言实战这本书是...