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

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

前言

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

评论的内容是这样的:

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(大多数用这个)。

总结

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

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

目录
相关文章
|
9月前
|
SQL 存储 数据库
SQL语言易错面试题含答案
SQL语言易错面试题含答案
45 2
|
22天前
|
负载均衡 算法 Java
【面试宝藏】Go语言运行时机制面试题
探索Go语言运行时,了解goroutine的轻量级并发及GMP模型,包括G(协程)、M(线程)和P(处理器)。GMP调度涉及Work Stealing和Hand Off机制,实现负载均衡。文章还讨论了从协作到基于信号的抢占式调度,以及GC的三色标记算法和写屏障技术。理解这些概念有助于优化Go程序性能。
30 4
|
2月前
|
安全 Go 开发者
Golang深入浅出之-Go语言并发编程面试:Goroutine简介与创建
【4月更文挑战第22天】Go语言的Goroutine是其并发模型的核心,是一种轻量级线程,能低成本创建和销毁,支持并发和并行执行。创建Goroutine使用`go`关键字,如`go sayHello("Alice")`。常见问题包括忘记使用`go`关键字、不正确处理通道同步和关闭、以及Goroutine泄漏。解决方法包括确保使用`go`启动函数、在发送完数据后关闭通道、设置Goroutine退出条件。理解并掌握这些能帮助开发者编写高效、安全的并发程序。
37 1
|
2月前
|
Java Go
Golang深入浅出之-Go语言指针面试必知:理解与使用指针
【4月更文挑战第21天】Go语言中的指针允许直接操作内存,常用于高效数据共享和传递。本文介绍了指针的基础知识,如声明、初始化和解引用,以及作为函数参数使用。此外,讨论了`new()`与`make()`的区别和内存逃逸分析。在结构体上下文中,指针用于减少复制开销和直接修改对象。理解指针与内存管理、结构体的关系及常见易错点,对于面试和编写高性能Go代码至关重要。
30 2
|
2月前
|
Java Go 调度
Go语言并发编程原理与实践:面试经验与必备知识点解析
【4月更文挑战第12天】本文分享了Go语言并发编程在面试中的重要性,包括必备知识点和面试经验。核心知识点涵盖Goroutines、Channels、Select、Mutex、Sync包、Context和错误处理。面试策略强调结构化回答、代码示例及实战经历。同时,解析了Goroutine与线程的区别、Channel实现生产者消费者模式、避免死锁的方法以及Context包的作用和应用场景。通过理论与实践的结合,助你成功应对Go并发编程面试。
38 3
|
2月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
43 0
|
9月前
|
安全 Oracle Java
【面试题精讲】Java语言概念
【面试题精讲】Java语言概念
|
2月前
|
安全 Java 编译器
Go语言面试宝典:50道必会题目与精解
本文提供了50道覆盖Go语言核心概念、并发编程、内存管理、包管理、错误处理和测试等方面的面试题及其详细答案,旨在帮助开发者全面准备Go语言技术面试。
|
11月前
|
存储 前端开发 安全
【面试题】: bs架构与cs架构的区别以及各自优缺点
bs架构与cs架构的区别以及各自优缺点
1817 0
|
2月前
|
算法 编译器 C++
C/C++面试题之语言基础篇(二)
C/C++面试题之语言基础篇(二)
68 0