面试新语言,你确定,不比较下优缺点么

简介: 面试新语言,你确定,不比较下优缺点么

前言

写的文章,收到小伙伴的评论了,先撒花庆祝下!!

评论的内容是这样的:

image.png

我可能是不是很理解这位同学的想法,也就如图所示,简单作了下回复。

王牌飞行员,申请出战!!!

在此,我申明下,我觉得,我传递的是一种思想、一种思考,主要面向对象为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(大多数用这个)。

总结

相信,又掌握了不少快速的转型需要的点。能够节省时间去学一门新东西,就得从总结中来,到总结中去。

好了,今天就这样,明天继续聊,更多的细节。

目录
相关文章
|
6月前
|
Java 编译器 Go
Go语言面试题1
【2月更文挑战第5天】Go语言面试题15个问题
72 2
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
45 2
|
2月前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
57 10
|
3月前
|
前端开发 Java 数据库连接
一天十道Java面试题----第五天(spring的事务传播机制------>mybatis的优缺点)
这篇文章总结了Java面试中的十个问题,包括Spring事务传播机制、Spring事务失效条件、Bean自动装配方式、Spring、Spring MVC和Spring Boot的区别、Spring MVC的工作流程和主要组件、Spring Boot的自动配置原理和Starter概念、嵌入式服务器的使用原因,以及MyBatis的优缺点。
|
4月前
|
算法 Java
Java面试题:列举并解释JVM中常见的垃圾收集器,并比较它们的优缺点
Java面试题:列举并解释JVM中常见的垃圾收集器,并比较它们的优缺点
90 3
|
4月前
|
监控 Java 调度
Java面试题:描述Java线程池的概念、用途及常见的线程池类型。介绍一下Java中的线程池有哪些优缺点
Java面试题:描述Java线程池的概念、用途及常见的线程池类型。介绍一下Java中的线程池有哪些优缺点
72 1
|
4月前
|
监控 安全 Java
Java面试题:描述Java反射机制及其应用场景,并讨论其优缺点。
Java面试题:描述Java反射机制及其应用场景,并讨论其优缺点。
48 1
|
5月前
|
负载均衡 算法 Java
【面试宝藏】Go语言运行时机制面试题
探索Go语言运行时,了解goroutine的轻量级并发及GMP模型,包括G(协程)、M(线程)和P(处理器)。GMP调度涉及Work Stealing和Hand Off机制,实现负载均衡。文章还讨论了从协作到基于信号的抢占式调度,以及GC的三色标记算法和写屏障技术。理解这些概念有助于优化Go程序性能。
63 4
|
4月前
|
设计模式 安全 Java
Java面试题:解释单例模式的实现方式及其优缺点,讨论线程安全性的实现。
Java面试题:解释单例模式的实现方式及其优缺点,讨论线程安全性的实现。
32 0
|
4月前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
76 0