争取在入职前把《学习Go语言》这个文档看完,把学习的笔记写在博客中,做为记录,方便之后查阅。git
练习的代码都放在我本身的GitHub中,地址为:
https://github.com/poemqiong/GoExercisesgithub
例如要查看unicode/utf8包的内容
godoc unicode/utf8 | less数组
pakckage main必须首先出现,而后是import,而后是其余全部内容。当Go程序在执行时,首先调用的函数是main.main().app
编译:go build test.go
直接运行:go run test.goless
若是两个(或更多)语句放在一行书写,它们必须用分号(;)分割,通常状况下,不须要在行末加分号。函数
Go的变量类型不是int a,而是a int。声明和赋值是两个过程。学习
不一样类型变量的赋值
(1)
var a int
var b bool
a = 15
b = false
(2)
var {ui
a int b bool
}
(3)指针
:= 15code
:= false
相同类型变量的赋值
a, b := 20, 16
_, b := 34,35
注意:
_是一个特殊的变量名,任何赋给它的值都会被抛弃。
Go的编译器会对声明却未使用的变量报错。
混合使用不一样类型的变量会引发编译器的错误。
在Go中,常量在编译时被建立,只能是数字、字符串或者布尔值。
Go中,字符串赋值以后是不能修改的。若是要修改,须要先转换为rune数组(rune是int32的别名)。
两个字符串相加应该写为
s := "a" +
"b"
而不能写作:
s := "a"
"b"
由于Go编译器会自动在每一行末尾加上分号。
运算符的优先级,第一行最高,最后一行最低:
/ % << >> & &^
= | ^
== != < <= > >=
<-
&&
||
须要注意的是:
&^表示位清除
没有逻辑非!
Go不支持运算符重载
if else
switch
goto
for
break and continue
range(迭代器)
array由[n]<type>定义,n标示array的长度,而<type>标示类型。赋值后,不能修改数组的大小,并且全部元素的类型相同。
一维数组:
a := [...]int{1,2,3}
a := [3]int{1,2,3}
二维数组:
a := 3int {{1,2}, {3,4}, {5,6}}
slice与array相似,可是能够添加新的元素,slice是一个指向array的指针,是引用类型(引用类型使用make建立)。
slice老是与一个固定长度的array成对出现。
sl := make([]int, 10)
s0 := []int{0,0}
s1 := append(s0, 2, 3, 4)
函数copy从源slice src复制元素到目标dst,而且返回复制的元素的个数。
源和目标能够重叠。
元素复制的数量是len(src)和len(dst)中的最小值。
map[<from type>]<to type>
当只须要声明一个map时,使用make的形式:mdays := make(map[string]int)
mdays["Jan"] = 31
v, ok := mdays["Jan"]
若存在的话,ok为true
delete(mdays, "Jan")
因为第一章是简介,讲的内容比较杂,相信在后续的使用中会愈来愈熟悉这些细节。