Golang介绍

目前golang最新版本为1.17.3,经过12年的发展,生态已经成熟。 Go是一门工程语言 go诞生的初衷就是解决c/c++的各种弊端,提高生产力。 go编译速度极快,相对于c++/rust,10倍以上编译速度。 go fmt 代码格式化,代码风格统一。 自动垃圾搜集。简化c/c++的内存管理。 单一执行文件。 Go与其他语言的区别 Go vs Java: Go有内存垃圾自动处理,无虚拟机。 Go无对象编程的类class的概念,更强调struct(类似C). Go的对象继承是“鸭子原理",Java是“血缘关系". Go vs C: Go无宏定义.兼容C。基本上可以用C的风格来写Go代码。 Go vs C++: …

java模式:单例/多例/线程单例

java单例模式有5种实现方式,推荐以下3种方式. 一、单例-饿汉式: 特点:线程安全,不能延时加载 public enum SingletonDemo1 { //枚举元素本身就是单例 INSTANCE; //添加自己需要的操作 public void singletonOperation(){ } } 二、单例-懒汉式-双重锁检查: 特点:线程安全,延时加载。 ps: java1.5后,volatile可以避免jvm初始化内存分配可能乱序的问题。 public class SingletonDemo2 { private static volatile SingletonDemo2 SingletonDemo2; private …

Golang代码结构

Go的设计思想是代码至上,依赖于代码而不是象其它语言依赖于编译好的库。尽管go的版本号已经到1.8.1了,但是还没没有好的package版本管理策略。1.6推出的vender只是稍微缓解了困境,只有寄希望与将来的1.9版本了。Go的代码结构不同于其它语言的地方,以java为对照: 代码文件位于src目录 假如GOPATH对应项目goprojectstruct,代码文件应该处于 goprojectstruct/src目录内. Go无class的概念 Go无对象编程的类class的概念。所以代码文件名称可以随意定义,但是一般位于package目录,一般与package同名,但是拆分成几个文件也是可以的。 代码文件/package …