go语言学习之旅
记录自己学习go语言的过程,坚持就是胜利!!!
qihao pang
这个作者很懒,什么都没留下…
展开
-
第十三节:面向对象(扩展已有类型)
当有的功能需要在别人的基础上扩展时该怎么做呢? 比如一个java里面的类,我们可以继承它,然后再写我们自己的逻辑,但是go没有继承,我肯可以使用以下方法: 定义别名 使用组合 接着上次的代码,树的遍历,上次实现了中序遍历,这次实现后序遍历。 上次遍历的代码: func (node *Node) Traverse() { if node == nil{ return } n...原创 2019-11-06 14:25:59 · 249 阅读 · 0 评论 -
第十二节:面向对象(包和封装)
go中的封装比较特殊: 使用方法名字的大小写来区分方法的属性: 首字母大写:public 首字母小写:privite 而这个public和privite是针对包来说的,包的概念: 每个目录一个包,包名和目录名不一定要一样。 main包包含了可执行的入口。 为结构定义的方法必须放在同一个包内,可以是不同的文件。 packa...原创 2019-11-06 12:36:18 · 143 阅读 · 0 评论 -
第十一节:面向对象(结构体和方法)
面向对象: go只支持封装,不支持继承和多态。 go语言没有class,只有struct。 type treeNode struct { value int leftNode,rightNode *treeNode } 结构体的定义 结构体没有构造函数,可以自定义工厂函数。 func createTreeNode(value int) *treeNode { retur...原创 2019-11-06 11:15:12 · 186 阅读 · 0 评论 -
第十节:map
map的创建: m:=map[string]int{ "java":20, "c":20, "cpp":20, } m1:=make(map[string]int) var m3 map[string]int 打印一下: fmt.Println(m) fmt.Println(m1) fmt.Println(m3) 控制台: map[c:20 ...原创 2019-11-05 17:19:22 · 107 阅读 · 0 评论 -
第九节:切片(slice)
arr:=[...]int{0,1,2,3,4,5,6,7,8,9} s:=arr[2:6] 其中s就是切片,slice本身是没有数据的,是对底层array的一个view。 切片的操作: func updateSlice(s []int) { s[0]=100 } func main() { arr:=[...]int{0,1,2,3,4,5,6,7,8,9} fmt.P...原创 2019-11-05 16:35:01 · 629 阅读 · 0 评论 -
第八节:数组、切片和容器
数组: func main() { var arr1 [5]int arr2 := [3]int{1,2,3} arr3 :=[...]int{1,2,4,5,6,3} fmt.Println(arr1,arr2,arr3) } 数组定义的几种方法 控制台打印: [0 0 0 0 0] [1 2 3] [1 2 4 5 6 3] Process finished with e...原创 2019-11-05 14:55:54 · 116 阅读 · 0 评论 -
第七节:指针
go语言有指针这一概念。 直接上代码: func pointTest() { var a int =3 var p *int =&a fmt.Println(a,p,*p) } 定义int类型的值a,并且赋值为3 定义int类型指针变量p,并且取a的地址赋值给p 输出a和p 控制台; 3 0xc00000a0a8 3 Process finished with exi...原创 2019-11-05 13:49:27 · 107 阅读 · 0 评论 -
第六节:函数
关键字:func 函数定义: func eval(a,b int,op string) string { } go语言中,函数定义使用关键字func,函数名在前,函数返回值类型在后,参数定义也一样,参数名在前,参数类型在后,同类型的参数可以写在一起。如 a,b int 多个返回值的函数: func div(a,b int )(int,int) { return a/b...原创 2019-11-05 11:33:06 · 137 阅读 · 0 评论 -
第五节:循环语句
for语句: func forTest() { sum:=0 for i:=1;i<=100;i++{ sum+=i; } } 总结:for条件中不需要括号 进阶: func convertTOBin(n int) string { result := "" for;n>0;n/=2{ lsb:=n%2 result=strconv.Itoa(ls...原创 2019-11-05 10:38:19 · 119 阅读 · 0 评论 -
第四节:条件语句
if语句: if v>100{ return 100 }else if v<50{ return 50 }else { return v } if语句不需要括号 用法进阶: const fileName ="abc.txt" if contents,error := ioutil.ReadFile(fileName);error!=nil{ f...原创 2019-11-05 10:11:47 · 160 阅读 · 0 评论 -
第三节:go常量的定义
func consts() { const fileName ="a.txt" const a,b =3,4 var k int k=int(math.Sqrt(a*a+b*b)) fmt.Println(fileName,k) } const关键字:表示常量,常量可定义在包内部,放法外面,放法内部可直接使用,可直接指定常量的类型,也可不指定类型,常量的数值可以当作任何类型使...原创 2019-11-04 18:04:46 · 398 阅读 · 0 评论 -
第二节:go的内建变量类型
bool:布尔类型 true false string:字符串类型 (u)int :int类型,加上u表示无符号int类型,不规定长度则int长度根据操作系统决定,32位系统中为32位,64位系统中为64位。 (u)int8 :规定长度的int 8位 (u)int16:规定长度的int 16位 (u)int32:规定长度的int 32位 (u)int64:规定长度的int 64位 ...原创 2019-11-04 17:44:47 · 183 阅读 · 0 评论 -
第一节:变量的定义和使用
一、建立一个空的工程,开始go的第一课学习(使用goland编辑器,具体安装破解可百度,go 版本 1.12.8) 1、建立一个basic.go文件。 文件里面很简单,只有一个main函数 2、开始学习变量定义 2-1、老规矩,"hello world"来一个 点击左边绿色的三角按钮,运行,不出意外的话控制台就会打印出 "hello world",好!已经迈出了学习go的第一...原创 2019-11-04 17:04:49 · 297 阅读 · 0 评论