JAVA转go系列之 语言基础 - Go语言中文社区

JAVA转go系列之 语言基础


     和JAVA语言一样Go语言也是由多个标记组成,可以是关键字,标识符,常量,字符串等等

 java语言

Go

go语言的fmt包就和Java的System一样都有它强大的功能属于自带的包这里要说一下,System是一个final修饰的类,而fmt是一个包,System点出来的都是静态的,而Go的fmt是一个包名,go是面向函数(其实也不完全面向函数,我这里先这样理解),还有一点go的包的文件都可以直接修改,java就不行了。初学的时候觉得挺有意思的,觉得程序就因当这样,程序员因当能主导所有的代码,java依赖的包不能修改,除非copy整个的代码然后打包

基础语法说完了说一说数据类型吧,有个大佬说过 程序=数据结构+算法,可以见得数据结构在程序中是多么的重要,和java类似go的数据类型也分为内置数据类型和引用数据类型

java的内置数据类型 java有8个基本数据类型也就是内置数据类型,这些数据类型是存储在栈中,所以使用这类数据类型的时候是使用的值传递,也就是在使用过程中是不会对原来的数据产生影响。java为这些数据类型都提供了包装类,就是为了在参数产地过程中可以使用地址传递

Go也有提供内置数据类型基本和java差不多,需要注意的是go语言在函数之间传递变量时,总是以值传递。这点跟java不同,java只要传递的是引用类型,就是地址传递。go如果需要使用地址传递就要显示声明一下

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。

Java 变量声明

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier [ = value][, identifier [= value] ...] ;

Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。

在java中变量的可见性是由修饰符决定的,Go中的可见性是由变量的首字母大小写来控制的,相比java少写了很多代码。

在java中如果一个变量声明了没有被使用编译器会提示警告,在Go中如果一个变量编译了没有被使用则编译错误!

 

 语言变量作用域 

作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。

Java 局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

类变量(静态变量)

  • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

Go 

和java差不多

Go 语言中变量可以在三个地方声明:

  • 函数内定义的变量称为局部变量
  • 函数外定义的变量称为全局变量
  • 函数定义中的变量称为形式参数

总结:go和java的变量作用域差不多,局部变量和全局变量名都可以重复,但是使用过程中使用就近原则。

 

语言常量

java中对常量使用修饰符final修饰,被final修饰过得变量都属于常量,常量只是在编译中的,编译器不允许你修改它的值

Go中的常量使用const声明。仅仅对于变量来说使用差不多

 

语言运算符

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

两种语言的运算符基本都是这几种,用法也是差不多!

今天就写到这里了,之后的控制流程,条件语句基本和java都差不多主要熟悉就行了,后面会跳过直接写关于数组,切片,指针已经结构体

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39982274/article/details/85130810
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-25 11:40:09
  • 阅读 ( 2262 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢