【30天熟悉Go语言】4 Go的变量、常量、运算符

文章目录

  • 一、前言
  • 二、变量
    • 1、变量的基础使用
    • 2、变量的多种使用方式
      • 1)全局变量
      • 2)局部变量
      • 3)丢弃赋值
    • 3、Go和Java的变量对比
  • 三、常量
    • 1、Go和Java的常量对比
  • 三、运算符
    • 1、算术运算符 ++、--
    • 2、运算符 &、*
  • 四、总结

一、前言

在这里插入图片描述

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界
  2. 2 Go开发环境搭建、Hello World程序运行
  3. 3 Go编程规约和API包

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、变量

变量相当于内存中一个数据存储空间的标识。

1、变量的基础使用

变量的使用分三步:声明、赋值、使用。

  • 变量的声明 采用 var 变量名 数据类型的形式。
package mainimport "fmt"func main() {// 1. 变量的声明var age int// 2. 变量的赋值age = 18// 3. 变量的使用fmt.Println("age = ", age)
}

变量的声明和赋值可以合成一句:

var age int = 19

如果变量重复定义,GoLand中会报错:
在这里插入图片描述

变量赋值时,数据与类型不匹配,报错如下:

在这里插入图片描述

2、变量的多种使用方式

1)全局变量

全局变量是定义在函数外的变量,可以被多个函数使用。

package mainimport "fmt"var globalV1 = 100
var globalV2 = 1.11func main() {variable1()//variable2()
}func variable1() {fmt.Println(globalV1)fmt.Println(globalV2)
}func variable2() {fmt.Println(globalV1)fmt.Println(globalV2)
}

如果存在多个全局变量,每次都要用var来声明,太麻烦了;所以Go支持一次性声明多个不用类型的变量;

var (globalV1= 3.33globalV2= "Hello"
)

2)局部变量

局部变量是声明在函数{}中的变量;

1> 指定变量的类型 并 赋值:

var v1 int = 18
fmt.Println(v1)

2> 指定变量的类型,但是不赋值,使用默认值:

var v2 int
fmt.Println(v2)

3> 不写变量的类型,程序会自动根据 = 号后面的值判断变量的类型(自动类型推断):

var v3 = "saint"
fmt.Println(v3)

4> 可以使用:= 代替 var,进行变量的声明赋值:

v4 := "bob"
fmt.Println(v4)

5> 声明多个相同类型的变量:

var n1, n2, n3 int
fmt.Println(n1)
fmt.Println(n2)
fmt.Println(n3)

6> 声明多个不同类型的变量:

var n4, name, n5 = 9, "jack", 7.8
fmt.Println(n4)
fmt.Println(name)
fmt.Println(n5)// 省略var的方式
n6, sex := 6.9, "man"
fmt.Println(n6)
fmt.Println(sex)

3)丢弃赋值

使用标识符_接收值,可以丢弃赋值;

丢弃赋值必须在一次取两个及以上的值的场景下,又不想要其中一个值的时候使用。

var _,_,num = 1,2,3
fmt.Println("num = ",num)

代码片段中将只会接受到3这个值,并将其赋值给num变量。

3、Go和Java的变量对比

  1. 变量声明赋值方式不同;Java是变量类型 变量名 = 变量值、Go是var 变量名 变量类型 = 变量值

    // Java 变量类型  变量名 = 变量值
    String name = "li_ming";
    
    // Go var  变量名  变量类型 = 变量值
    var name string = "li_ming"
    
  2. Java的变量声明需要指定变量的数据类型;Go的变量声明可以不指定变量的数据类型(类型自动推断)

    // go类型自动推断
    var v3 = "saint"
    
  3. Java方法内外变量赋值只能使用=;Go的变量声明赋值在函数内部可以缩写(变量名 := 变量值),函数外只能用var 变量名 = 变量值

    // 函数内部可以直接使用 【 变量名 := 变量值 】 赋值,函数外不可以
    name := "saint"
    
  4. Go支持多变量同时赋值,丢失赋值(使用标识符_接收值,可以丢弃赋值,但必须在一次取两个及以上的值的场景下,又不想要其中一个值的时候使用)

    // 多变量同时赋值
    var name,age = "saint",18
    
    // 丢弃赋值,示例中:把 1和2丢弃 只取3
    var _,_,num = 1,2,3
    fmt.Println("num = ",num)
    

三、常量

Go的常量和变量声明的唯一区别在于:常量声明使用const、变量声明使用var。如果大家写过一段时间的前端,会发现Go的常量和变量声明和前端比较像。

//const  常量名  常量类型 = 常量值   显示推断类型
const name string = "const_sanint"
//隐式推断类型
const name2 ="const_sanint2"

1、Go和Java的常量对比

Go中的常量和Java中的常量含义有一个本质的区别:

  • Go中的常量是指在编译期间就能确定的量;而Java中的常量是指被赋值一次(JVM跑起来后赋值的)后就不能修改的量。
  1. 常量声明方式不同;Java是final修饰符 常量类型 常量名 = 常量值,Go是const 常量名 常量类型 = 常量值

    // Java final修饰符   常量类型   常量名 =  常量值;
    public static final String TAG = "A";
    
    // go const  常量名  常量类型 = 常量值   显示推断类型
    const name string = "const_li_ming"
    // go 隐式推断类型
    const name2 ="const_xiao_hong"
    

三、运算符

运算符是—种特殊的符号,用以表示数据的运算、赋值和比较等 。Go中常用的运算符如下:

在这里插入图片描述

这里几乎和Java语言的使用方式,这里针对算术运算符中的++--和其他运算符做一些解释说明。

1、算术运算符 ++、–

++ 自增 加1操作,–自减,减1操作。

var a int = 10
a++
fmt.Println(a)
a--
fmt.Println(a)

和Java不同的点:

  • Go中,++-- 操作非常简单,只能单独使用,不能参与到运算中去,比如:age = ++age + 10,这种复杂运算是不允许的。
  • Go中,++-- 只能在变量的后面,不能写在变量的前面(--a ++a都是错误的写法)

2、运算符 &、*

在Go中 &* 有特殊的用意:

  • & :返回变量的存储地址
  • *:取指针变量对应的数值
package mainimport "fmt"func main() {var age int = 18fmt.Println("age对应的存储空间内存地址为:",&age)// 指针变量 ptr,指向age在存储空间的内存地址var ptr *int = &agefmt.Println(ptr)fmt.Println("ptr这个指针指向的具体数值为:",*ptr)
}

指针的内容见后面的文章。

四、总结

针对变量/常量的声明赋值,和Java相比,Go有一些特有的性质:

  1. 支持同时声明多个不同类型的变量/常量;
  2. 支持类型自动推断
  3. 支持丢弃赋值。

此外,针对常量,Java和Go的认知不同:

  • Java认为JVM跑起来之后,常量值被赋值了一次,后面不允许再更改。
  • 而Go的常量则是在编译期就能确定的量,同样不允许修改。

Go的算术运算符++-- 不能像Java一样用于复杂运算中,只能做最简单的使用。

并且Go的&* 有特殊用意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256694.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

idea简易创建main方法

最简易的创建main方法,按着图配置即可

idea执行main方法都要BUILD解决

开发代码中,很多时候我们为了验证一小段代码逻辑会直接写个main方法去执行,看看运行结果,最近发现idea 跑个main方法都要执行 compileJava 和 BUILD 解决方案: 去掉Delegate IDE build/run actions to gradle 勾选,应…

Idea运行main方法,不编译整个工程

在使用 IDEA 开发过程中,在一个main方法进行代码测试时,发现 IDEA 上 执行 main 方法后竟然编译整个项目!!! 最烦的是其他无关代码的报错 ,也会导致main方法不能编译执行。 我的idea版本如下,…

Java基础——main方法

深入理解main方法 解释main方法的形式:public static void main(String [] args){} main方法是由java虚拟机调用的。java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public。Java虚拟机在执行main()方法时不必创建对象,所以该…

美债提高上限的后果

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《再论以太坊的自限性》,谈了一下对比特币和以太坊自限性问题的再研讨,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币小幅回落至28k下方。昨日在28k上方遭遇了…

如何在Linux环境中执行main方法

对于程序员来说,很闹心的一个问题就是在生产上找bug,太太太难了,所以写测试类是一个用到很普遍的方法,那么测试类的main方法是如何被调用的呢,其实很简单啦。Linux命令:java -cp jar包 类的全限定名 参数 …

scala的MAIN方法

MAIN方法 scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。 定义Main方法 main方法 scala def main(args:Array[S…

Java的main方法

文章目录 引言一、写法二、解释三、运行参考 引言 写Java代码时,最常用到main方法的场景是运行类中的某一个方法,进行测试,本文简单介绍一下Java的main方法。 一、写法 固定写法如下: public static void main(String[] args){ …

main方法详解

学习Java有一段时间了,一直没用过博客来写写自己在学习过程中遇到的问题和学习心得,看到别人在诸如博客这样的社区写一些总结觉得挺好的。索性,今天开始自己也用起博客记录学习。一来呢,能更好的总结学习知识。二来,有…

使用main方法启动spring程序

使用main方法启动spring程序 在 spring 框架中,由于对象都交给了 IoC 容器进行管理,那么直接在 main 方法中创建 service 层对象,就会出现空指针异常(NPE) 正确的方式是从 IoC 的容器中取出对象,再使用对象…

深入理解Java的main方法

一、简单介绍 在我们的Java程序中都会出现一个名称为main的方法,我们发现没有这个方法我们的程序就无法运行。 其实任何一个Java程序的运行入口都是这个main方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法&#…

SpringBoot项目main方法详解

前言 SpringBoot项目启动时通过执行main方法启动,main方法主要做了两方面工作: 初始化Spring容器启动tomcat运行项目 下面我们通过源码来看如何进行的上面两个操作。 源码分析 我们以debug的方式进行源码的分析。main方法中,我们调用了SpringApplic…

main方法和单元测试方法

1、编写代码可使用快捷键 输入main然后点击回车;输入sout然后点击回车。 输入想要输出的内容然后运行代码即可 2、java严格区分大小写 main方法也叫主函数,在一个类中只有一个main方法。 java中每一条语句都是以分号为结束标志。 3、单元测试方法 …

Java中的main方法

一、概念 main方法是java程序的入口,每个java应用程序都必须有且仅有一个main方法。 二、深入理解 public static void main(String[] args) {} main方法是被java虚拟机调用的。java虚拟机不在该类中,也不在该类的包中,也不是该类的子类。…

java中main方法的作用是什么_java中main方法是什么

Java中的main方法,是一个java应用程序的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java程序那么必然就要有一个main方法。 main方法的定义格式通常固定如下: (推荐学习:java课程)public class Demo {public static void main(String[] ar…

Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

public static void main(String[] args) {}或者 public static void main(String args[]) {}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,…

“大厂的人一毕业,讲师就多了起来”——但培训行业,早就卷起来了

“大厂的人一毕业,讲师就多了起来”,很多中年产品经理都把去做培训当成一个后备选项,也许,作为十几年前就淌过路的人,可以给你一些信息。 总体来说,今年有个特别的体感,就是产品经理/产品思维/产…

main方法

阅读数:3530 [java] view plain copy public static void main(String[] args) {} 或者 [java] view plain copy public static void main(String args[]) {} main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Jav…

详解Java中的main方法

main方法格式定义 public: main方法启动时由JVM进行加载,public的可访问权限是最高的,所有需要声明为public;static: 方法的调用要么是通过对象,要么是通过类,而main方法的话,因为是由虚拟机调用的,所以无…

java中类的main方法总结

一、java中每个类都需要有main方法吗? 每个类可以有也可以没有main方法, 甚至所有类里可以都没有main方法。如果你想从某个类做为入口开始运行整个程序。那么就把他设成 public ,之后再里面写个main方法作为入口。 每个项目都要有一个主类…