以下主要描述Go语言程序结构。
一、名称的定义规范
这里包括函数、变量、常量、类型、语句标签以及包的名称都必须以字母或下划线开头,后面可以跟任意数量的字符、数字和下划线,在golang中,名称是区分大小写的,如:
var Age int8与var age int8是两个不相同的变量,golang中的关键字和内置的常量、类型和函数不能作为名称来使用。
(1)关键字:
- var和const :变量和常量的声明
- var varName type 或者 varName : = value
- package and import: 导入
- func: 用于定义函数和方法
- return :用于从函数返回
- defer someCode :在函数退出之前执行
- go : 用于并行
- select 用于选择不同类型的通讯
- interface 用于定义接口
- struct 用于定义抽象数据类型
- break、case、continue、for、fallthrough、else、if、switch、goto、default 流程控制
- chan用于channel通讯
- type用于声明自定义类型
- map用于声明map类型数据
- range用于读取slice、map、channel数据
(2)内置的常量、类型以及函数
常量:true false iota nil
类型:int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64 bool byte rune string error
函数:make len cap new append copy close delete panic recover complex real imag
golang的名称的采用驼峰的写法风格,与java等语言类似。
二、变量
通常变量定义的方式是:var name type = expression,其中type的expression可以省略一个,如:
var userName string
var userName = "zhangsan"
1、短变量
通常用于函数体中,主要用来声明和初始化局部变量,定义格式:name := expression,name的类型有expression来决定,如:
userName := "zhangsan" //这里边userName就是一个字符类型
i := 2 //这里边的i就是一个int类型
不管是短变量还是一般变量都支持一次声明多个,如:
userName, i := "zhangsan", 2
var userName, i = "zhangsan", 2
2、指针
指针的值是一个变量的地址,一个指针指示值所保存的位置,如:
var x int
那么&x表达式是一个指向整型变量的指针,它的类型是整型指针(*int),如果&x的值叫做p,那么p是包含x的地址,p指向的变量写*p,表达式*p是获取变量的值。
例子:
x := 1 var p *int = &x fmt.Println(*p) //这里输出的是1 *p = 2 //等价与x=2 fmt.Println(x) //结果是2
3、new 函数
创建变量的另外一种方法是使用new 函数,格式 :new(T),T表示类型,它表示创建一个T类型的变量,初始化为T类型的零值,并返回其地址,即*T类型,如:
p := new(int) //p的类型为*int,初始值为0
三、变量的作用域
用实例来说明
package shop import ( "fmt" ) var Global int; //函数体外声明,且是大写字母开头的变量属于全局变量 var j int; //函数体外声明,小写字母开头的是包(package)级别的变量 //该小写字母开头函数数包级别的 func shopping(){ k := 1 //函数体内的变量 fmt.Print("shop") for{ m : =1 //程序块内的变量,仅在本程序块使用,程序块是指一对{} fmt.Println(k,m) } } //该大写字母开头函数属于全局级别 func GoShopping(){ }
有疑问加站长微信联系(非本文作者)