Go与Java(2) Go和Java微观对比-1

200 阅读5分钟

1.GoPath和Java的ClassPath

我们先来看看关于Java的classpath:  

在我们的开发环境中,一个web程序(war包)有一个classpath,这个classpath在IDEA的开发工具中目录体现为src目录和resource目录,实际上在真正的war包中他定位的是指WEB-INF下的classes文件夹下的资源(比如class文件)。

我们编译后的文件都放在classpath(类路径)下。我们多个项目程序会有多个classpath目录。

在Go语言中,GoPath在同一系统上的同一用户,一般规定只有一个,无论这个用户创建多少个go项目,都只有一个GoPath,并且这些项目都放在GoPath下的src目录下。

  GoPath下有三个目录:

​ 1.bin (用于存放项目编译后的可执行文件)

​ 2.pkg (用于存放类库文件,比如.a结尾的包模块)  

​ 3.src (用于存放项目代码源文件)

  注意:当我们在windows上开发Go程序时,需要新建一个文件夹(文件夹名任意)作为GOPATH的文件目录,在其中新建三个文件夹分别是:bin,pkg,src。如果是在集成开发工具上开发的话,需要在设置中把GOPATH路径设置为你自定义的那个文件夹,之后产生的文件和相关内容都会在其中。

如果是在linux上想跑测试开发执行go程序,需要在/etc/profile添加名为GOPATH的环境变量,目录设置好自己新建的。

例如:全局用户设置GOPATH环境变量  

vi /etc/profile

#添加如下 目录可以灵活修改

export GOPATH=/pub/go/gopath

//立即刷新环境变量生效

source /etc/profile  

单用户设置GOPATH环境变量

vi ~/.bash_profile  

#添加如下 目录可以自己灵活修改

export GOPATH=/home/user/local/soft/go/gopath

//立即刷新环境变量生效

source vi ~/.bash_profile

注意:这是在linux上开发go程序才需要的,如果只是生产运行程序的话是不需要任何东西的,直接运行二进制可执行程序包即可,他所有的依赖全部打进包中了。  

如果是在windows下的cmd,dos窗口运行相关的go命令和程序,则需要在windows的【此电脑】-->【右键】-->【属性】-->【高级系统设置】-->【环境变量】-【新建一个系统变量】-->【变量名为GOPATH,路径为你自己指定的自定义文件夹】(如果是在IDEA中开发,不需要在此配置环境变量,只需要在IDEA中配置好GOPATH的目录设置即可)

2.Go的开发环境搭建

(配置环境变量GOPATH参考上一节内容)

我们要开发Go的程序,需要如下两样东西:  

1.Go SDK  

​ GO中文社区SDK下载地址:studygolang.com/dl

​ go1.14

​ 我们用1.14版就可以,因为1.13后才完全支持Module功能。

​ 有两种安装模式,一种是压缩包解压的方式,一种是图形化安装。

​ 推荐使用windows图形安装傻瓜式安装,windows图形安装下载这个

  ​ studygolang.com/dl/golang/g…

​ linux安装如下:  

​ 后续补上。。。

  1. Go的集成软件开发环境

​ 参考三(4)中的go集成开发环境选择。

 

3.Go与Java的文件结构对比

 

1).go文件结构模板

//主程序必须是写成main包名
package main


//导入别的类库
import "fmt"    


//全局常量定义
const  num = 10
  
//全局变量定义
var name string = "li_ming"


//类型定义
type P struct {


}
  
//初始化函数
func init() {


}


//main函数:程序入口
func main() {
	fmt.Printf("Hello World!!!");
}

 

2).Java文件结构

//包名

package my_package;

//导入包中的类

import java.io.*;

 

public Class MainTest{

//main方法:程序入口

public void static main(String[] args) {

}

}

//people类

Class People {

//成员变量

public String name;

public int age;

//成员方法

public void doSomething() {

}

}

 

4.Go与Java的集成开发环境

1).Go的集成开发环境

 

最常用的有三种:

Visual Studio Code(VS Code) 微软开发的一款Go语言开发工具。

LiteIDE 是国人开发的Go语言开发工具。

GoLand 这个非常好用,和Java中的IDEA是一家公司。(推荐使用)

2).Java的集成开发环境

MyEclipse,Eclipse(已过时)。

IntelliJ IDEA(大多数用这个)。

5.Go和Java常用包的对比

Go中文API文档地址:

studygolang.com/pkgdoc

       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

算数操作    math                          java.math

底层       Unsafe                         unsafe unsafe类
 

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

1).go中的常用基础数据类型有:


1.布尔型:关键字【bool】: true false

2.有符号整形:头一位是代表正负

int 默认整形 48字节 32位或64int8 1字节 8int16 2字节 16int32 4字节 32位

in64 8字节 64位

【int32还是64位取决于操作系统的位数,现在电脑一般都是64位的了,所以一般都是64位】

3.无符号整形

uint 48字节 32位或64uint8 1字节 8uint16 2字节 16uint32 4字节 32uint64 8字节 644.浮点型

注:go语言没有float类型,只有float32float64float32 32位浮点数

float64 64位浮点数

5.字符串

string

6. byte 等同uint8,只是类似于一个别名的东西

rune 等同int32 只是一个别名,强调表示编码概念对应的数字

 

2).go中派生数据类型有:

注:这里简单列举一下

指针 Pointer

数组 Array[]

结构体 struct

进程管道: channel

函数 func

切片 slice

接口 interface

哈希 map

3).Java中的基础数据类型

 


byte
 
short

int

long

float
 
double
 
boolean

char