Go语言学习过程中,你需要知道的Java与Go的基础对比

简介: Go语言学习过程中,你需要知道的Java与Go的基础对比

前言

周一了,不知道大家都忙么。有没有好好地学习呢?嘻嘻,今天,我抽时间,又把Java与Go之间进一步做了对比。

那么,我们就来聊一下,今天对比的部分内容。

常用包

众多周知,开发过程中,更多的时候,在使用开发包来辅助开发。那么,具体的情况是什么样子的呢?

GO

Java
IO流操作 bufio/os java.lang.io
字符串操作 strings java.lang.String
容器 container(heap/list/ring) java.lang.Collection
sync juc
时间 time java.time/java.lang.Date
底层Unsafe unsafe unsafe类
算数操作 math java.math

我们可以从以上表格看到常用操作的包明细。

想要学习更多Go中文API文档,Go的API包文档

Go的常用基础数据类型和Java的基础数据类型对比

Go中的常用基础数据类型

image.png

Go中派生数据类型

image.png

Go和Java的变量对比

Go的变量
package main
import(
  //包含print函数
  "fmt"
)
func main() {
  //var 变量名 变量类型 = 变量值
  var name string = "xiao_li"
  //方法内部可以直接使用 【 变量名 := 变量值 】 赋值,方法外不可以
  name2:="xiao_hong"
  fmt.Println("name = ",name)
  fmt.Println("name2 = ",name2)
}

Java的变量

public class test {
   public static void main(String[] args) {
       //变量类型 变量名 = 变量值
       String name = "xiao_li";
       int i = 10;
       System.out.println("name ="+name);
       System.out.println("i ="+i);
  }
}

Go和Java的常量对比

Go的常量

Go中的常量和Java中的常量含义有一个本质的区别:Go中的常量是指在编译期间就能确定的量(数据),而java中的常量是指被赋值一次后就不能修改的量(数据)。所以两者不一样,因为Java中的常量也是JVM跑起来后赋值的,只不过不允许更改;Go的常量在编译后就确实是什么数值了。

package main
import(
  //包含print函数
  "fmt"
)
func main() {
  //const 常量名 常量类型 = 常量值   显示推断类型
  const name string = "const_li_ming"
  //隐式推断类型
  const name2 ="const_xiao_hong"
  fmt.Println("name = ",name)
  fmt.Println("name2 = ",name2)
}

Java的常量

public class test {
   //【访问修饰符】 【静态修饰符】final修饰符   常量类型   常量名 = 常量值;
   public static final String TAG = "A";    //一般设置为static静态
   public static void main(String[] args) {
       System.out.println("tag= "+TAG);
  }
}

Go与Java的赋值对比

Go的赋值

Go方法内的赋值符号可以用  := ,也可以用 =,方法外只能用 = 。

package main
import(
  //包含print函数
  "fmt"
)
//方法外只能用 = 赋值
var my_name  string = "my_name"
var my_name2 = "my_name2"
//my_name3:="my_name3"   不在方法内,错误
func main() {
  fmt.Println("name = ",my_name)
  fmt.Println("name2 = ",my_name2)
}

Go支持多变量同时赋值:

package main
import(
  //包含print函数
  "fmt"
)
func main() {
  //多变量同时赋值
  var name,name2 = "li_ming","xiao_hong"
  fmt.Println("name = ",name)
  fmt.Println("name2 = ",name2)
}

Go丢弃赋值:

package main
import(
   //包含print函数
   "fmt"
)
func main() {
   //丢弃赋值    把 1和2丢弃 只取3
   //在必须一次取两个以上的值的场景下,又不想要其中一个值的时候使用,比如从map中取key,value
   var _,_,num = 1,2,3
   fmt.Println("num = ",num)
}

Java的赋值

public class test {
    public static void main(String[] args) {
        //直接用 = 赋值
        String name = "li_ming";
        int i = 10;
        System.out.println("name ="+name);
        System.out.println("i ="+i);
    }
}
总结

跟着之前学习Java的脚步,我们一步步的分析,Go与Java的对比。

作为一名Javaer转型Goer 其实是so easy。

目录
相关文章
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
4天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
13 2
|
4天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2
|
8天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
31 7
|
9天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
38 5
|
8天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
25 1
|
7天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
84 58
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
8天前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
25 9
|
4天前
|
Go
go语言中的 跳转语句
【11月更文挑战第4天】
12 4