学习go。记录下
1),package、import
这两个功能在现在的很多语言(java、C#)都具备了。这里面引入包在C家族确实是个很好的东西,使得代码组织更清晰;import而不是include头文件,完全剔除了c家族的弊病。
2),变量命名风格的改变
定义变量:
var i int跟C家族语法int i;相去甚远,貌似更接近delphi、javascript、scala风格。当然在语法分析中这样定义变量比C风格的定义是更容易识别的。
类型推导:
类型推导在很多函数语言(scala、f#等)是必须滴,当然C#为了推出lambda表达式也实现了这个功能,不过java现在还没有。需要注意的是go中类型推导只能用在函数里面。来看看 var i int=11的等价写法 i := 11。
同时给多个变量赋值:
lua可以给多个变量赋值的,go也有而且语法几乎一样滴 a,b,c := 1,2,3 ,如果写成 a,_:=1,2 那么2就自动丢掉。
有了这个功能交换变量一句话就搞定了 a,b =b,a。
定义多个变量:
如果是定义相同类型的变量可以这样 var i,j int 跟C差不多 int i,j;
如果是多个不同类型的变量那是这样
var (
i int
s string
)
定义数组:
定义数组跟定义变量稍微变一变 var array [8]int
还可以这样写 array :=[...]int{0,1,2,3,4,5,6,7}。
获取数组长度 len(array),而不是C家族的array.length
3),go内置数据类型
slices:
上面定义的数组大小是无法改变的。如果要动态的那就要这样 array :=make([]int,8) 或者这样是
4),控制语句
go里控制语句精简了(去除了while、do)不少而更灵活了。
A),if语句。if在条件表达式内不用加圆括号,但强制加大括号。变化点if的条件表达可以有初始化语句
if a:=1; a==0{}
B),for语句
for 表达式; 条件; 表达式{} 典型的C家族for
for 条件{} C家族while的替代
for{} 死循环
for和关键字range结合遍历数组、slices、map。类似于js的for in、java 的for(val : list.values())、C#的foreach.
for key,value range array{}
1),package、import
这两个功能在现在的很多语言(java、C#)都具备了。这里面引入包在C家族确实是个很好的东西,使得代码组织更清晰;import而不是include头文件,完全剔除了c家族的弊病。
2),变量命名风格的改变
定义变量:
var i int跟C家族语法int i;相去甚远,貌似更接近delphi、javascript、scala风格。当然在语法分析中这样定义变量比C风格的定义是更容易识别的。
类型推导:
类型推导在很多函数语言(scala、f#等)是必须滴,当然C#为了推出lambda表达式也实现了这个功能,不过java现在还没有。需要注意的是go中类型推导只能用在函数里面。来看看 var i int=11的等价写法 i := 11。
同时给多个变量赋值:
lua可以给多个变量赋值的,go也有而且语法几乎一样滴 a,b,c := 1,2,3 ,如果写成 a,_:=1,2 那么2就自动丢掉。
有了这个功能交换变量一句话就搞定了 a,b =b,a。
定义多个变量:
如果是定义相同类型的变量可以这样 var i,j int 跟C差不多 int i,j;
如果是多个不同类型的变量那是这样
var (
i int
s string
)
定义数组:
定义数组跟定义变量稍微变一变 var array [8]int
还可以这样写 array :=[...]int{0,1,2,3,4,5,6,7}。
获取数组长度 len(array),而不是C家族的array.length
3),go内置数据类型
slices:
上面定义的数组大小是无法改变的。如果要动态的那就要这样 array :=make([]int,8) 或者这样是
var array []int
array =make([]int,8)
[n:m]访问符
[n:m]同样也适用于数组的。用array[n:m](n、m是数组下标)将返回一个从n到m-1的slices。
如果写成[n:]则等价于[n:len(array)]
array :=[...]int{0,1,2,3,4,5,6,7}
array2 :=array[2:4] //返回{2,3}
cap函数
cap 用于获取数组的容量。
append函数
在一个slices或数组后追加元素,产生一个新slices。
array := [...]int{0,1,2,3,4,5,6,7}。
array1 := array=append(array,8,9,10);//添加的数据(8、9、10)是一个可变参数
copy函数
n = copy(des ,src)。n等于拷贝元素个数。
array := [...]int{0,1,2,3,4,5,6,7}。
array1 := make( []int,5)
copy(array1,array[0:5])
map :
go中内置了map数据结构。定义一个map是这样的 var m map[kType]vType。vType是map关键字存储的值的类型,kType是关键字的数据类型。map的创建也是需要用make函数来创建的 m=make(map[int]string) ,这里创建关键字类型为int,值类型为string的map。如果map的值是知道的,那么可以用这样
[n:m]访问符
[n:m]同样也适用于数组的。用array[n:m](n、m是数组下标)将返回一个从n到m-1的slices。
如果写成[n:]则等价于[n:len(array)]
array :=[...]int{0,1,2,3,4,5,6,7}
array2 :=array[2:4] //返回{2,3}
cap函数
cap 用于获取数组的容量。
append函数
在一个slices或数组后追加元素,产生一个新slices。
array := [...]int{0,1,2,3,4,5,6,7}。
array1 := array=append(array,8,9,10);//添加的数据(8、9、10)是一个可变参数
copy函数
n = copy(des ,src)。n等于拷贝元素个数。
array := [...]int{0,1,2,3,4,5,6,7}。
array1 := make( []int,5)
copy(array1,array[0:5])
map :
go中内置了map数据结构。定义一个map是这样的 var m map[kType]vType。vType是map关键字存储的值的类型,kType是关键字的数据类型。map的创建也是需要用make函数来创建的 m=make(map[int]string) ,这里创建关键字类型为int,值类型为string的map。如果map的值是知道的,那么可以用这样
m:=map[int]String{
1:"A",
2:"B",
3:"C",
...
1:"A",
2:"B",
3:"C",
...
}
注意map里每个元素逗号后一定要换行。
map增加元素 m[4]="d" ;
map去除元素 delete(m,4)
map判断存在 val,exists :=m[4]
很多人对go在语言层面内置slices和map持欢呼的态度,go为了内置slices(map)还添加关键字(go号称很吝啬关键字滴)。lua、python等语言都内置了很有特色的数据类型,go走的是一条方向(ruby、python的开发人员爽了吧)。也许真如go的开发者说的slices(map)是轻量快速的。
注意map里每个元素逗号后一定要换行。
map增加元素 m[4]="d" ;
map去除元素 delete(m,4)
map判断存在 val,exists :=m[4]
很多人对go在语言层面内置slices和map持欢呼的态度,go为了内置slices(map)还添加关键字(go号称很吝啬关键字滴)。lua、python等语言都内置了很有特色的数据类型,go走的是一条方向(ruby、python的开发人员爽了吧)。也许真如go的开发者说的slices(map)是轻量快速的。
4),控制语句
go里控制语句精简了(去除了while、do)不少而更灵活了。
A),if语句。if在条件表达式内不用加圆括号,但强制加大括号。变化点if的条件表达可以有初始化语句
if a:=1; a==0{}
B),for语句
for 表达式; 条件; 表达式{} 典型的C家族for
for 条件{} C家族while的替代
for{} 死循环
for和关键字range结合遍历数组、slices、map。类似于js的for in、java 的for(val : list.values())、C#的foreach.
for key,value range array{}
C),switch。明显的差别是go的switch case里不用谢braek。
C1,case可以有条件表达式
a:=1
swich{
case a>0&& a<10:
//dosomething
default:
//dosomething
}
C2,case 连续匹配
swich a{
case 1,2,3:
//dosomething
default:
//dosomething
}
C2,fallthrough.新关键字fallthrough让当前case匹配到下一个case里。。
swich a{
case 1:fallthrough
case 2:fallthrough
case 3:fallthrough
//dosomething
default:
//dosomething
}
C3,go的switch也有if语句一样的初始化语句
swich a:=1;a{}
C1,case可以有条件表达式
a:=1
swich{
case a>0&& a<10:
//dosomething
default:
//dosomething
}
C2,case 连续匹配
swich a{
case 1,2,3:
//dosomething
default:
//dosomething
}
C2,fallthrough.新关键字fallthrough让当前case匹配到下一个case里。。
swich a{
case 1:fallthrough
case 2:fallthrough
case 3:fallthrough
//dosomething
default:
//dosomething
}
C3,go的switch也有if语句一样的初始化语句
swich a:=1;a{}
相关推荐
go语言基础入门学习文档以及go语言并发学习的一些案例总结,我是一个两年多的Java开发工程师,从18年开始,开始接触容器化kubernetes这一块的项目,一开始是做了一个Java对接k8s启动pod,管理pod的平台。今年决定对...
GO语言学习总结(package,function).pdf
理解Go语言如何解决并发难以编写正确这一根本问题。 学习并发与并行的关键性区别。 深入到Go语言的内存同步原语。 利用这些模式中的原语编写可维护的并发代码。 将模式组合成为一系列的实践,使你能够编写大规模...
里面的内容是我在学习GO语言时候的一个总结,里面提到的相关知识点都是一些基本知识,希望对一些刚想要加入学习GO语言队伍的新老朋友们提供一点点帮助!
leetcode题库 go-learning @author 鲁伟林 ...记录《Go语言实战》中各章节学习过程,写下一些自己的思考和总结。 分为4大部分,可直接查看,或者通过专栏博客分章节产看 专栏博客地址 序号 名称 1 1 2
自己总结的go语言基础的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。
对于一名初学者来说,想要尽快熟悉 Go 语言特性,所以以操作式的学习方法为主,比如编写一个简单的数学计算器,读取命令行参数,进行数学运算。 本文讲述使用三种方式讲述 Go 语言如何接受命令行参数,并完成一个...
go总结学习方案帮助更快学习
GolangStudy: Golang 面试学习 本项目旨在指导程序员们如何从基础开始系统的学习 Go 语言,并学习面试所需知识点。 Go 是一门非常容易上手的语言,语法简洁,代码易读...为了更方便的学习 Golang,特意开发了一款小程序
Slice切片是对底层数组Array的封装,在内存中的存储本质就是数组,体现为连续的内存块,Go语言中的数组定义之后,长度就已经固定了,在使用过程中并不能改变其长度,而Slice就可以看做一个长度可变的数组进行使用,...
语言学习路径与资料分享 本人最近刚刚经历了痛苦的入门过程,现想将自己的学习过程&学习资料整理、分享给有需要的人。 最后更新时间:2019年2月21日 Go 学习路径 首先在这里简单总结一下怎么学习一门新的语言: 1、...
内含学习路线,官方文档,个人总结,面试经验,旨在编程学习从0到1一站式学习 一站式编程学习网站,涵盖前后端、运维,包括但不限于Java、Python、Go、HTML、JavaScript、TypeScript、Git、Docker、k8s。内含学习...
继续研究项目go语言学习历程所有学习上的成功,都只承受两件事-策略和坚持,而坚持本身就是最重要的策略!go-study Go学习笔记总结去基础Go环境和命令|Go基本数据类型|薄片和切片|地图|流程控制|函数|结构体和方法|...
主要介绍了Go语言文件读取的一些总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
切片是引用类型,相信对大家来说都不陌生,下面这篇文章主要给大家总结介绍了关于Go语言中切片使用的一些注意事项,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
go语言一知半解 !> golang一知半解,自我学习golang总结。半是收集办事理解,权作知识留存
自己学习golang入门,亲测有效
在本篇文章里小编给大家分享了关于Python和Go语言的区别相关知识点,需要的朋友们学习下。
一个排序的小工具(来自go语言编程一书) 将sorter目录加入GOPATH,就可以进行编译,测试和运行了。 : gin框架学习 环境问题 设置GOPATH 在.bash_profile中加入: export GOPATH=/Users/kevin/go export GOBIN=$GOPATH...
内含学习路线,官方文档,个人总结,面试经验,旨在编程学习从0到1一站式学习。.zip 一站式编程学习网站,涵盖前后端、运维,包括但不限于Java、Python、Go、HTML、JavaScript、TypeScript、Git、Docker、k8s。内含...