一 GO 语言函数
函数是基本的代码块,用于执行一个任务。
GO语言最少有个main() 函数。
二 Go 语言切片(Slice)
Go语言切片是对数据的抽象。
Go数组的长度不可改变,在特定的情况下就是不太适合,go提供了一种功能强大的内置类型切片(“动态数组”),可以追加元素,随着元素的增多数据增长。
(2) len()和 cap()函数
切片是可索引的,并且可以由 len() 方法获取长度。
切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。
package
mainhttp://write.blog.csdn.net/postedit/78478348
import
"fmt"
http://write.blog.csdn.net/postedit/78478348
func
main
(){
var
numbers
=
make
([]
int
,
2
,
5
)
http://write.blog.csdn.net/postedit/78478348
printSlice
(numbers)
}
func
printSlice
(x []
int
){
fmt.
Printf
(
"len=%d cap=%d slice=%v
\n
"
,
len
(x),
cap
(x),x)
}
[Running]
go run "d:\GOPATH\godemo\demo2.go"
len=2 cap=5 slice=[0 0]
(3)空(nil)切片
(4) append() 和copy()函数
如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分切片的内容拷到新的切片内。
// 允许追加切片
number
=
append
(number,
0
)
printSlice
(number)
//向空切片添加一个元素
number
=
append
(number,
1
)
printSlice
(number)
//同时添加多个元素
number
=
append
(number,
2
,
3
,
4
,
5
,
6
,
7
,
8
)
printSlice
(number)
//创建切片 numbers1 是之前切片的两倍
numbers1
:=
make
([]
int
,
len
(number),(
cap
(number))
*
2
)
printSlice
(numbers1)
//拷贝
copy
(numbers1,number)
printSlice
(numbers1)
len=1 cap=1 slice=[0]
len=2 cap=2 slice=[0 1]
len=9 cap=10 slice=[0 1 2 3 4 5 6 7 8]
len=9 cap=20 slice=[0 0 0 0 0 0 0 0 0]
len=9 cap=20 slice=[0 1 2 3 4 5 6 7 8]
三 Go 语言范围(Range)
Go语言中range关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和动态数组中返回元素的索引值、在集合中返回key值
nums
:=
[]
int
{
2
,
3
,
4
}
sum
:=
0
for
i
,
num
:=
range
nums{
sum
+=
num
fmt.
Println
(
"sum"
+
" i"
,sum,i)
}
//在数组上使用range将传入index和值得两个变量。上面那个例子我们不需要使用该元素的序号,所以
//使用空白符省略。有时候我们确实需要知道它的索引
for
i
,
num
:=
range
nums{
if
num
==
3
{
fmt.
Println
(
"index:"
,i)
}
}
//range 也可以用在map的键值对上
kvs
:=
map
[
string
]
string
{
"a"
:
"apple"
,
"b"
:
"bananana"
}
for
k
,
v
:=
range
kvs{
fmt.
Printf
(
"%s -> %s
\n
"
,k,v)
}
//range 也可以用来Unicode字符串。第一个参数是字符的索引,第二个参数是(Unicode本身)
for
i
,
c
:=
range
"go"
{
fmt.
Println
(i,c)
}
四 GO语言Map(集合)
Map是一种无序的键值对的集合。Map最重要的一点是通过Key来快速检索数据,key类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
var
countryCapitalMap
map
[
string
]
string
//创建集合
countryCapitalMap
=
make
(
map
[
string
]
string
)
//mp 插入key-value对,各个国家对应的首都
countryCapitalMap[
"France"
]
=
"Paris"
countryCapitalMap[
"Italy"
]
=
"Rome"
countryCapitalMap[
"Japan"
]
=
"Tokyo"
countryCapitalMap[
"India"
]
=
"New Delhi"
//使用key输出map值
for
country
:=
range
countryCapitalMap{
//中间不能出现空格
fmt.
Println
(country,
" "
,countryCapitalMap[country])
}
captial
,
ok
:=
countryCapitalMap[
"United States"
]
//查看元素是否在集合中存在
if
(ok){
fmt.
Println
(
"Capital of United States is"
,captial)
}
else
{
fmt.
Println
(
"Capital of United States is not present"
)
}
//删除集合中的元素 直接删除key
delete
(countryCapitalMap,
"France"
)
for
country
:=
range
countryCapitalMap{
//中间不能出现空格
fmt.
Println
(country,
" "
,countryCapitalMap[country])
}
输出结果
France Paris
Italy Rome
Japan Tokyo
India New Delhi
Capital of United States is not present
Italy Rome
Japan Tokyo
India New Delhi