GO语言学习系列1
Posted tab_tab_tab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言学习系列1相关的知识,希望对你有一定的参考价值。
1.1GO语言的安装
链接:http://pan.baidu.com/s/1hsjkmSO 密码:5m1f
然后一路狂点安装。。。
最后在CMD中
已经成功安装。。。
1.2GO语言之顺序编程
呃,GO语言和C++之类的语言有点不同。
1.2.1声明:首先体现在变量的声明上
C:int x;
GO:var x int
C:int x,y,z;
GO:var
x int
y int
z int
说明几点如下:
a.GO语言的花括号左边必须跟着在同一行。不能另外起一行。
GO语言中变量的声明没有C/C++那样的琐碎,C/C++中变量有什么private,public之类的访问属性限制,而在GO语言中,变量首字母如果是小写的则是private属性的,如果是函数则会被声明成inline,要是无法inline,就会声明成static。而大写就相当于public和全局的….这是一条相当重要的性质。。。
b.声明和定义的区别:声明只是声明了一个符号,并未真正占用存储空间,而定义则真正真实在内存中占用了一定字节。
c.呃,对于C来说,则并非如此…..C语言中声明了一个变量则必定在函数栈帧上占用一些字节。。。而GO中声明则是声明,并不会占用字节数。
1.2.2定义
C:int x = 10;
GO :
var x = 10 //自动推导出int类型
var x int = 10
x := 10//自动推导 :=仅用于定义且初始化,如果左边的符号是定义过的,则会编译出错。
又要说几点的时候到了。
A.GO语言是一种强类型语言,和C语言一样,没有所谓的弱类型语言的特点。。。。
B.多重赋值功能。。。。C/C++程序员羡慕不已的功能
x1,x2….xn = y1,y2,y3…yn
类似上面那样的语句就是多重赋值的功能。。。呃,至于多重赋值有什么用…..方便编程,,比如x,y = y,x这样简单一句就可以完成了交换两个数的功能。酷炫吧?
C.返回多个函数值,也许这部份对于C/C++经常用的人就能感觉到这种东西带来的好处,对于C/C++语言来说,要是想让函数返回多个值,要么是搞什么结构体返回结构体要么是传一个指针或者是引用作为参数传进去,这样大大的加大了程序的可阅读性。如果是使用过matlab或者是其他语言就会知道函数返回多个返回值的好处了
而对于GO来说,恰好引进了这个功能。
函数声明
function GetName() (firstname,lastname,name string)
return “aaa”,”bbb”,”ccc”;
而接收第三个参数可以这样写
,,name = GetName()
1.2.3常量
a.字面常量比如10,10.0,“helloworld”之类的已经写死的东西,或者说是字面常量,他们的类型是无类型,呃,这个好处有什么呢。。。。这个主要是因为是GO语言不提供隐式类型转换,在他们眼中,甚至uint和int之间无法自动类型转换,除非程序员自动用强制类型转换(使用方法和C语言完全类似)。这时候,如果常量10表示int类型,那么它就无法赋值给uint类型的变量!!!除非加上了强制类型转换。
b.常量的赋值是编译期的事情,因此不能把函数的返回值给常量。呃,具体解释也可以如此解释。因为常量存放在.rodata段,具体想了解的请自行去阅读程序员的自我修养,那本书有一定的涉及,而对于段上的数据,是在可执行文件中有一定体现的,或者说,经过编译链接之后,这东西必须写死写入到可执行文件中去。所以自然是必须要在编译期确定。(核心:和常量的存储位置有关)
c.特殊的变量,true,false,itoa;
只说一下itoa吧,
const
x = itoa
y
z
//x = 0 y = 1 z =2就这样。。。。自动增长,这玩意儿没什么的
…….
**位运算:**GO语言中的取反是^x这样用
新的类型:complex表复数类型。。。。
以上是关于GO语言学习系列1的主要内容,如果未能解决你的问题,请参考以下文章