Go语言基础语法学习笔记[1]
2017-02-09 14:10
706 查看
行分隔符:
Go语言中,一行代表一个语句结束,不需要以分号“;”结尾,如果需要在一行写多个语句,则每个语句需要使用分号进行区分,不鼓励这样做。
注释:
//
单行注释
/*
多行注释
*/
标识符:
标识符名称由
字母/数字/下划线
组成,开头第一个字母必须是字母或者下划线,标识符不能与关键字/保留字相同。
关键字/保留字:
Go 代码中会使用到的 25
个关键字或保留字:
除了以上介绍的这些关键字,Go
语言还有 36
个预定义标识符:
Go语言中定义的数据类型:
声明变量:
使用默认值赋值变量:var v_name v_type
根据赋值自动判断变量类型:var v_name = value
定义的同时进行赋值:var v_name v_type = value
使用“:=”进行定义,省略var关键字,注意“:=”左侧的变量名不能为已声明的变量名,不需要指定变量类型:v_name
:= value
例如:
var a int;
var b = 3;
var c int = 3;
d := 4
var {
//这种写法一般用于全局变量声明
e int
f bool
}
var g, h, i int = 1, 2, 3;
j, k := 10, "abc";
交换变量:
var a, b int = 3, 5; // a = 3, b = 5
a, b = b, a;
// a = 5, b = 3
空白标识符(“_”):
空白标识符用于抛弃值,例如 _ , b = 1, 2;
执行后,b的值为2,1被抛弃。
空白标识符是一个只写变量(不能读),所以不能得到它的值。这么设计的原因是Go语言中必须使用所有被声明的变量,但是有时你不需要使用一个函数的所有返回值,这种情况下需要使用空白标识符来占位,例如:
func main() {
var _, b =getError();
fmt.Println(b);
}
func getError() (int, string) {
var errorNumber int = 1;
var errorMsg string = "Thisis an error";
return errorNumber, errorMsg;
}
如果我们不使用某个声明的变量(例如注释掉上面的fmt.Println(b)),则会报以下错误:
D:\Programming\GoWork>go run HelloWorld.go
# command-line-arguments
.\HelloWorld.go:12: b declared andnot used
常量定义:
const identifier [type] = value
例如:
const a string = "abc"
const a = "abc"
const a, b = 1, 2
定义枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
iota是一个特殊常量,用于递增const常量的值(由于默认const类型的值不会递增)。iota的特性:
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
例如:
const (
Unknown =iota
Female =iota
Male = iota
)
const (
Success =iota
Failure =iota
Exception =iota
Others =iota
)
const (
TestA = 10
TestB
TestC
)
func main() {
fmt.Println(Unknown, Female, Male)
// output: 0 1 2
fmt.Println(Success, Failure, Exception, Others)
// output: 0 1 2 3
fmt.Println(TestA, TestB, TestC)
// output: 10 10 10
}
再看一个例子:
func main() {
const (
a =iota
//0
b
//1
c
//2
d ="ha" //独立值,iota += 1
e
//"ha" iota += 1
f =100
//iota +=1
g
//100 iota +=1
h =iota //7,恢复计数
I
//8
)
fmt.Println(a,b,c,d,e,f,g,h,i) // 0 1 2 ha ha 100 100 7 8
}
Go语言中,一行代表一个语句结束,不需要以分号“;”结尾,如果需要在一行写多个语句,则每个语句需要使用分号进行区分,不鼓励这样做。
注释:
//
单行注释
/*
多行注释
*/
标识符:
标识符名称由
字母/数字/下划线
组成,开头第一个字母必须是字母或者下划线,标识符不能与关键字/保留字相同。
关键字/保留字:
Go 代码中会使用到的 25
个关键字或保留字:
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
语言还有 36
个预定义标识符:
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
print | println | real | recover | string | true | uint | uint8 | uintptr |
Go语言中定义的数据类型:
类型 | 描述 | ||||||||||||||||||||||||||||||||||||
布尔型 | 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 | ||||||||||||||||||||||||||||||||||||
数字类型 | 整型 int 和浮点型 float,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
| ||||||||||||||||||||||||||||||||||||
字符串类型 | 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 | ||||||||||||||||||||||||||||||||||||
派生类型 | 指针类型(Pointer) 数组类型 结构化类型(struct) Channel 类型 函数类型 切片类型 接口类型(interface) Map 类型 |
声明变量:
使用默认值赋值变量:var v_name v_type
根据赋值自动判断变量类型:var v_name = value
定义的同时进行赋值:var v_name v_type = value
使用“:=”进行定义,省略var关键字,注意“:=”左侧的变量名不能为已声明的变量名,不需要指定变量类型:v_name
:= value
例如:
var a int;
var b = 3;
var c int = 3;
d := 4
var {
//这种写法一般用于全局变量声明
e int
f bool
}
var g, h, i int = 1, 2, 3;
j, k := 10, "abc";
交换变量:
var a, b int = 3, 5; // a = 3, b = 5
a, b = b, a;
// a = 5, b = 3
空白标识符(“_”):
空白标识符用于抛弃值,例如 _ , b = 1, 2;
执行后,b的值为2,1被抛弃。
空白标识符是一个只写变量(不能读),所以不能得到它的值。这么设计的原因是Go语言中必须使用所有被声明的变量,但是有时你不需要使用一个函数的所有返回值,这种情况下需要使用空白标识符来占位,例如:
func main() {
var _, b =getError();
fmt.Println(b);
}
func getError() (int, string) {
var errorNumber int = 1;
var errorMsg string = "Thisis an error";
return errorNumber, errorMsg;
}
如果我们不使用某个声明的变量(例如注释掉上面的fmt.Println(b)),则会报以下错误:
D:\Programming\GoWork>go run HelloWorld.go
# command-line-arguments
.\HelloWorld.go:12: b declared andnot used
常量定义:
const identifier [type] = value
例如:
const a string = "abc"
const a = "abc"
const a, b = 1, 2
定义枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
iota是一个特殊常量,用于递增const常量的值(由于默认const类型的值不会递增)。iota的特性:
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
例如:
const (
Unknown =iota
Female =iota
Male = iota
)
const (
Success =iota
Failure =iota
Exception =iota
Others =iota
)
const (
TestA = 10
TestB
TestC
)
func main() {
fmt.Println(Unknown, Female, Male)
// output: 0 1 2
fmt.Println(Success, Failure, Exception, Others)
// output: 0 1 2 3
fmt.Println(TestA, TestB, TestC)
// output: 10 10 10
}
再看一个例子:
func main() {
const (
a =iota
//0
b
//1
c
//2
d ="ha" //独立值,iota += 1
e
//"ha" iota += 1
f =100
//iota +=1
g
//100 iota +=1
h =iota //7,恢复计数
I
//8
)
fmt.Println(a,b,c,d,e,f,g,h,i) // 0 1 2 ha ha 100 100 7 8
}
相关文章推荐
- JSP笔记:<%--aaa --%>和<!--aaa-->两种注释的区别
- Go 语言 Channel 实现原理精要
- c++ primer 第五版 笔记前言
- Go语言将支持Android
- Golang 源码阅读 os.File
- Golang byte buffers tricks
- 在Windows下编译golang
- Ruby的语法和语言特性总结
- 那些年,我还在学习C# 学习笔记续
- Ruby 魔法 学习笔记之一
- Docker与Golang的巧妙结合
- Vue.js第四天学习笔记
- 详解Sql基础语法
- sqlserver 数据库学习笔记
- C#语法相比其它语言比较独特的地方(二)
- CSS学习笔记Padding 属性中参数的定义与使用
- prototype 1.5 & scriptaculous 1.6.1 学习笔记
- prototype 学习笔记整理
- SQLSever中的触发器基本语法与作用
- Oracle学习笔记(六)