Golang 学习笔记1:Hello World

178 阅读3分钟

引言

学习 Golang 不只是因为它近年来不断上升的热度,而是工作场景中容器化、微服务、区块链底层技术等相关应用不断被提起,促使相关技术知识的获取和实践。

Golang 简介

Golang 作为 Google 开发的一种开源、编译和静态类型的编程语言,具有复杂性低、并发性好、静态链接的优势,同时也具有缺乏泛型、错误处理不足、非常规依赖管理和日期管理的缺点。

适用场景有:服务器编程(处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理)、网络编程(Web 应用、API应用、下载应用)、数据库和云平台开发。

知名项目

随着容器编排(Container Orchestration)、微服务(Micro Services)、云技术(Cloud Technology)的盛行,知名 Golang 项目 Docker(容器技术)、Kubernetes(容器编排)、Prometheus(监控系统)、Etcd(分布式存储)、InfluxDB(时序数据库)、Colly(爬虫框架)也应运而生。主要项目有:

  • docker,也称为容器,通过虚拟化技术实现的操作系统与应用的隔离;
  • kubernetes,也称为k8s,和 docker 一起作为当前容器化技术的重要基础设施;
  • etcd,一种可靠的分布式KV存储系统,有点类似于zookeeper,可用于快速的云配置;
  • codis,由国人开发提供的一套优秀的redis分布式解决方案;
  • tidb,国内PingCAP 团队开发的一个分布式 SQL 数据库;
  • influxdb,时序型DB,着力于高性能查询与存储时序型数据,常用于系统监控与金融领域;
  • cockroachdb,云原生分布式数据库,继 NoSQL 之后出现的新概念,称为 NewSQL 数据库;
  • beego,国人开发的一款及其轻量级、高可伸缩性和高性能的web应用框架;
  • caddy,类比于nginx,支持 HTTP/2 的开源 Web 服务端;
  • flynn,一款开源的paas平台;
  • consul,HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置;
  • go-kit,Golang相关的微服务框架,这类框架还有go-micro、typthon;
  • go-ethereum,官方开发的以太坊协议实现;
  • couchbase,是一个非关系型数据库;
  • nsq,一款高性能、高可用消息队列系统,每天能处理数十亿条的消息;
  • packer,一款用来生成不同平台的镜像文件的工具,例如VM、vbox、AWS等;
  • doozer:高速的分布式数据同步服务,类似ZooKeeper;
  • tsuru:开源的PAAS平台,和SAE实现的功能一模一样;
  • gor:一款用Go语言实现的简单的http流量复制工具;

环境准备

下载地址:go.dev/dl/
下载版本:go1.19.darwin-amd64
安装路径:/usr/local/go
环境变量:/usr/local/go/bin 被添加到了 PATH 中

go version 输出版本即为安装成功

hello world

编辑器:GoLand 2022.2.2 付费版本

创建 project HelloWorld,创建 go file helloWorld.go,添加输出 hello world 的 main 方法

package HelloWorld

import "fmt"

func main() {
   fmt.Println("hello world")
}

如果直接运行 go run helloWorld.go,会出现 package command-line-arguments is not a main package 的报错。通过把 package HelloWorld 改为 package main 解决。这里体现了 Go 和 Java 在 package 上的区别,Go 的一个文件夹中只能有一个 main package 和一个 main 方法,不能在每个文件中有一个 main 方法。

总结

Golang 具有友好的环境准备过程,开发简洁,上手容易。