前言
写的文章,收到小伙伴的评论了,先撒花庆祝下!!
评论的内容是这样的:
我可能是不是很理解这位同学的想法,也就如图所示,简单作了下回复。
王牌飞行员,申请出战!!!
在此,我申明下,我觉得,我传递的是一种思想、一种思考,主要面向对象为Javaer或者是其他语言从业者,想要转型的人,或者想要多学点东西的人。
个人觉得,学习是必要的。但是如果需要舍弃的时候,需要理性分析,谨慎选择。
好,我们今天开聊吧。今天,我们进一步,从微观上去看看,Go与Java的比较。
我觉得,对于有Java基础的小伙伴来说,学习一门新的语言,其实不会很难。重点,在于找到其区别,掌握其核心差异。从而简单的,学会语法即可。
我不要求,小白,来看我写的内容。因为,可能确实不是很适合。毕竟是主题月专栏,我相信无数个小伙伴,会教你,怎么下载,怎么安装,怎么配置环境变量。
好,不废话,开始!!
Go社区
相信作为Java小伙伴来说,可能无数个Java社区在活跃。那么,作为Go的社区呢?在此,我们特别的列一下,常用的社区资源。
Go的官网:https://golang.org/ (这个,可能需要和谐网络)
Go的中文访问官网:https://golang.google.cn/
Go的中文社区:https://studygolang.com/
Go的中文文档:https://studygolang.com/pkgdoc
好,大概的网站信息,是这样的。
Go和Java的语言类型区别
学习一门新的语言,肯定要了解到底什么什么语言。
正如我们当年学习Java时,我们学习到,Java是一门半编译,半解释型语言。编译是指Java代码都会编译成class类型的文件,class类型的文件只需要编译一次,可以在不同的操作系统的Java虚拟机上即JVM执行 ,半解释是指在Java虚拟机中,还是需要一句一句的将class的二进制代码解释成对应操作系统可执行的代码。
那么,Go是一种什么语言呢?
Go是编译型的语言,运行在不同的平台需要打包成不同操作系统类型下的可执行文件。
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的目录设置即可)
Go的开发环境搭建
其实,安装教程,从官网直接看就好了。非常简单,不存在任何的疑难点。
与Java相同,下载,安装,配置环境变量
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() { } }
Go与Java的集成开发环境
1).Go的集成开发环境
最常用的有三种: Visual Studio Code(VS Code) 微软开发的一款Go语言开发工具。 LiteIDE 是国人开发的Go语言开发工具。 GoLand 这个非常好用,和Java中的IDEA是一家公司。(推荐使用)
2).Java的集成开发环境
MyEclipse,Eclipse(已过时)。 IntelliJ IDEA(大多数用这个)。
总结
相信,又掌握了不少快速的转型需要的点。能够节省时间去学一门新东西,就得从总结中来,到总结中去。
好了,今天就这样,明天继续聊,更多的细节。