admin管理员组

文章数量:1443939

Java 软件开发者如何学习 Go 语言

首先,我们需要清楚一个事实,Java的生态圈依旧是现有最全且最多的,毫无疑问,Go在这个方面还是没有可比性。

Go没有所谓的SpringCloud,mybatis ,mybatisplus....这些快速框架,类似的可能有Gin、GoFrame等等

学习一门语言前,你不能光了解所谓的优点,启动快,内存占用小,并发模型优异,云原生更友好等等。你更需要接受他没有完善的开发框架,并且拥有复杂的业务系统,甚至可能会在开发过程中遇到从未出现的问题,作为一个Java开发者,最好的入门方式肯定是做一套管理系统来做对比学习,体会Java和Go的区别,做深入理解。需要指出一点的是,这样的Go一定会弱于Java,这不是本文想体现的,两者语言各有优劣,不针对和批评两者的操作逻辑。合理比较学习,如果你作为Java程序员,希望能让你清晰的对别两者的差异化。

  • 下面做一下 两者启动服务的对比
代码语言:java复制
使用 springboot 启动服务
@SpringBootApplication
public class AppApplication {
    public static void main(String[] args) {
        SpringApplication.run(WeixinApiReptileApplication.class, args);
    }
}

一次编译处处运行,只要是在有 java 环境的地方都可以运行,使用堆栈的设计方案,面向对象变成。

但是,最低的 SpringBoot 的 jar 包大概也是在 20M 以上,编译出的可执行文件体积大,运行非常的占用内存。有非常完善的社区和各种开源工具。

代码语言:go复制
使用 gin 框架

func main() {
	r := gin.Default()
	r = router.CollectRouter(r)
	if port != "" {
		panic(r.Run(":" + port))
	}
	r.Run(config.Config.Server.Port) // listen and serve on 0.0.0.0:8080
}

go 在不同的环境下可以编译成不同的可执行文件,例如exe文件,Mac 的 dmg 等,大部份参考了C++的逻辑,直接通过指针操作。并且打包的可执行文件体积小,内存占用小。但是社区活跃度比 java 低,在有很多优秀的开发者共同努力之下,已经逐渐完善。

学习 go 之前,需要先了解 go 的语法,逐步深入,做一些简单的控制台项目,逐渐去深入。多借鉴一些大佬的代码,这里 引用我写的一个

gin框架入门:

顺便共享一个网络上比较好的 go的文件目录

代码语言:txt复制
├── cmd/                   # 项目入口目录
│   └── main.go           # 主程序入口
├── internal/             # 私有代码目录
│   ├── handler/         # HTTP处理器(等同于Controller)
│   │   └── user.go
│   ├── service/         # 业务逻辑层
│   │   └── user.go
│   ├── repository/      # 数据访问层(等同于DAO)
│   │   └── user.go
│   └── model/          # 数据模型
│       └── user.go
├── pkg/                 # 可被外部引用的包
│   ├── middleware/     # 中间件
│   ├── config/        # 配置
│   └── utils/         # 工具函数
├── api/                # API文档(Swagger/OpenAPI)
│   └── swagger.json
├── configs/            # 配置文件目录
│   └── config.yaml
├── scripts/           # 构建、部署脚本
├── test/             # 测试文件目录
└── go.mod            # Go模块文件

学习没有途径,只有不断摸索

本文标签: Java 软件开发者如何学习 Go 语言