Go语言学习笔记(三)-包、变量、函数
来源:互联网 发布:阿里云 个人 试用 编辑:程序博客网 时间:2024/06/06 05:26
包
每个Go程序都是由包组成的,且每个程序是从main包开始运行,看一段实例代码:
package mainimport ( "fmt" "math/cmplx")func main(){ x complex128 = cmplx.Sqrt(-5+12i) fmt.Println(x)}
上述代码中通过导入路径”fmt”和”math/cmplx”来使用这两个包。Go约定包中源码的包名与引入路径的最后一个元素一致,例如”math/cmplx”这个包中的源码均是以package cmplx语句开始的。
导入
Go通过import来导入包,有两种导入形式:import packageName
和
import( "packageName1" "packageName2" ....)
当然也支持通过多个import来导入多个包,但是Go官方更推荐通过分组导入的方式,也就是上述中的第二种导入方式。
导出名
在Go中,如果一个名字以大写字母开头,那么它就是已导出的,例如Sqrt以及Pi,这两个都是导出名,一个导出自math/cmplx包一个导出自math包。在导入包时,只能引用其中已导出的名字,所有”未导出”的名字只能在包内访问。
函数
在Go中,函数以func来定义,可以没有参数或多个参数,参数类型以空格隔开置于参数后方。与不同的是Go的参数如果存在两个或两个以上类型相同,则除了最后一个参数类型必须声明之外,其他几个参数可以忽略。另外,Go中函数可以返回多值且存在返回值时必须声明返回值类型,也可对返回值进行命名。已命名返回值会被视作定义在函数顶部的变量,当函数中存在不带参数的return语句时,则返回已命名的返回值,也就是’直接’返回。
变量
Go通过var来声明变量,变量类型与函数的参数类型一样置于变量后面,以空格隔开,多个连续变量类型相同时,可只写最后一个变量类型。实例如下:
package mainimport "fmt"var z,x intfunc main(){ var i,j int var t string var test = true k := "test" var m,n,s = false,1,"test"}
从上述代码中我们可以看出Go的变量定义可以出现在函数级也可以出现在包级,且可以不声明类型,通过初始值来获取类型,Go中可以同时给多个变量赋值,也可通过:=
来省略var关键字(仅限函数内,函数外所有变量都必须存在var关键字函数都必须存在func关键字)。
Go的基本类型以及零值
Go的基本类型很多,如下:
boolstrinhint int8 int16 int32 int64uint uint8 uint16 uint32 uint64byte //int8别名rune //int32别名float32 float64complex64 complex128
没有明确初始值的变量声明会被赋予它们的零值,数值类型的零值便为0,字符串则为空字符串,布尔类型的则为false。
在Go中支持显示转换变量类型,也就是强制转换。
常量
常量的定义与变量相似,不同的是常量使用const来定义且不能使用:=
来声明
- Go语言学习笔记(三)-包、变量、函数
- Go语言学习笔记-变量
- Go语言学习笔记---包
- Go语言学习笔记 -- 包
- GO语言学习笔记(三)
- GO语言学习笔记三
- Go语言学习笔记(三) [控制结构、内建函数]
- Go语言学习笔记---函数
- go语言学习笔记(4) 变量
- Go语言学习笔记(2)-变量,指针
- Go学习笔记三(包)
- go语言学习-函数和闭包
- Go语言学习笔记(六) [包]
- 三、go语言操作 mongodb mgo --go语言学习笔记
- 【Go学习】理解Go语言中的函数闭包
- 《go语言编程》学习笔记三
- go语言闭包,匿名函数,变量使用
- go语言学习-变量
- L2-014. 列车调度
- 英语学习-三河古镇
- java接口回调机制
- debian更新源时报错
- JAVA中堆和栈的区别
- Go语言学习笔记(三)-包、变量、函数
- 【CSS3】多款炫酷鼠标悬停图文动画效果
- Alipay首页刷新实现
- cmd命令快速启动、暂停和关闭sql server服务
- swift3 闭包表达式
- xmlns: 引入命名空间,编译不通过
- Could not get unknown property 'release' for SigningConfig container.
- Linux Makefile自动生成--实例
- JS使用实现记录客户浏览记录