GO语言学习笔记2(指针数组MAP)
2015-09-04 03:01
811 查看
指针声明
var p *int
或者
i := 2
p = &i
*p 表示取内容
但是对于数组/结构,可以直接通过p[1]/p.X来访问
结构的定义有点类似与C
type Vertex struct {
X int
Y int
}
初始化可以使用
v := Vertex{1, 2}
v.X = 4
其他几种定义方式
var (
v1 = Vertex{1, 2} // has type Vertex
v2 = Vertex{X: 1} // Y:0 is implicit
v3 = Vertex{} // X:0 and Y:0
p = &Vertex{1, 2} // has type *Vertex
)
数组的定义
var a [10]int
Slices是一个类似与数组的东西,它以一个数组为基础加上了长度信息。这里有详细的介绍http://blog.csdn.net/wuwenxiang91322/article/details/9072449
var a [10]int
s := a[1:5]
此时slice的长度为4,容量为10
同时s的初始化既可以s := []int{2, 3, 5, 7, 11, 13} 也可以 s := [12]int{2, 3, 5, 7, 11, 13} 二者只是cap(s)不同,len(s)相同
s可以进行切片,比如s[1:2]
同时s也可以使用make:
s := make([]int, 0, 5) 其中len = 0, cap = 5
slice也可以使用append添加元素
a = append(a, 2, 3, 4)
但是添加涉及到len 和 cap的不同增加,还需后续研究
元素历遍
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
}
i代表index, 从0开始,也可以使用for _, value := range pow{}忽略index
map的声明,初始化和赋值
var m map[string]int
func main() {
m = make(map[string]int)
m["Bell Labs"] = 2
fmt.Println(m["Bell Labs"])
}
也可以一次性声明加初始化
m := map[string]int{
"Bell Labs": 1,
"Google": 2,
}
注意1上面的2后面必须有逗号,而是:=只能用于函数内,外部必须用var
使用delete(m, "Answer")可以删除元素。但是访问m["Answer"] 返回 0, 这是需要使用
elem, ok = m[key]
如果为空则ok==false
func也可以赋给变量
hypot := func(x, y float64) float64 {
return math.Sqrt(x*x + y*y)
}
fmt.Println(hypot(3, 4))
同时go语言支持闭包,可以在函数内定义函数并返回
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
var p *int
或者
i := 2
p = &i
*p 表示取内容
但是对于数组/结构,可以直接通过p[1]/p.X来访问
结构的定义有点类似与C
type Vertex struct {
X int
Y int
}
初始化可以使用
v := Vertex{1, 2}
v.X = 4
其他几种定义方式
var (
v1 = Vertex{1, 2} // has type Vertex
v2 = Vertex{X: 1} // Y:0 is implicit
v3 = Vertex{} // X:0 and Y:0
p = &Vertex{1, 2} // has type *Vertex
)
数组的定义
var a [10]int
Slices是一个类似与数组的东西,它以一个数组为基础加上了长度信息。这里有详细的介绍http://blog.csdn.net/wuwenxiang91322/article/details/9072449
var a [10]int
s := a[1:5]
此时slice的长度为4,容量为10
同时s的初始化既可以s := []int{2, 3, 5, 7, 11, 13} 也可以 s := [12]int{2, 3, 5, 7, 11, 13} 二者只是cap(s)不同,len(s)相同
s可以进行切片,比如s[1:2]
同时s也可以使用make:
s := make([]int, 0, 5) 其中len = 0, cap = 5
slice也可以使用append添加元素
a = append(a, 2, 3, 4)
但是添加涉及到len 和 cap的不同增加,还需后续研究
元素历遍
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
}
i代表index, 从0开始,也可以使用for _, value := range pow{}忽略index
map的声明,初始化和赋值
var m map[string]int
func main() {
m = make(map[string]int)
m["Bell Labs"] = 2
fmt.Println(m["Bell Labs"])
}
也可以一次性声明加初始化
m := map[string]int{
"Bell Labs": 1,
"Google": 2,
}
注意1上面的2后面必须有逗号,而是:=只能用于函数内,外部必须用var
使用delete(m, "Answer")可以删除元素。但是访问m["Answer"] 返回 0, 这是需要使用
elem, ok = m[key]
如果为空则ok==false
func也可以赋给变量
hypot := func(x, y float64) float64 {
return math.Sqrt(x*x + y*y)
}
fmt.Println(hypot(3, 4))
同时go语言支持闭包,可以在函数内定义函数并返回
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
相关文章推荐
- poj 1179 Polygon
- go (golang) DNS域名解析实现
- 第二章 概述
- POJ 1003 Hangover
- 访问google的一些方法
- mongo 常用的命令
- 谷歌Logo的变迁之路:从课后作业级走向世界级
- 运用Polygon类绘制六边形
- <转>四个重要属性——Action、Data、Category、Extras
- 【英语】Bingo口语笔记(63) - 一个单词的多种发音
- 【英语】Bingo口语笔记(62) - 生气道歉场景的表达
- Goods:图书模块按分类查询各层实现
- 第三方Windows To Go工具Rufus下载:把Win10操作系统装进U盘
- Django的CSRF保护引起的403 FORBIDDEN
- go mode
- 用了17年的Google Logo大改了
- morose things go by
- django 1.8 官方文档翻译: 3-3-1 文件上传
- 谷歌17年换了6个Logo:最短使用不到一年
- Django ajax