Go语言学习(一)

今天了解到现场一个问题,我们的一个业务系统,最近一周每天下午都收到服务器内存告警的邮件,但那台服务器的内存是16GB,却也不够在上面跑几个tomcat程序的,所以在运行一些博客程序或者论坛程序,以及小的应用系统时,一直不太愿意使用类似SSH或者SpringBoot开源的的java后台框架,一方面是穷,另外就是java的Web后台程序确实耗资源;


从另一个侧面了解到,大公司、包括小公司都将自己的Java后台服务迁移到了Go语言的环境上,所以一直都有使用Go做为Web服务器开发基础框架的想法,不如开始学习Go,也算是多了一个技能傍身。


作为一个写客户端软件的人,其实后台程序包括框架、SDK等等多少还是有学习成本的,出于快速出效果的角度考虑,之前使用的都是相对容易上手的php、nodejs的后台框架,完全忽略性能问题,多少显得不专业;


首先得想清楚为什么学习Go,Go语言的使用场景,从Go语言的发展历史,以及各大公司的应用场景,脚手架是否丰富等各方面做了解。

 

使用Go语言进行开发的大项目

1) Docker         项目链接:https://github.com/docker/docker

2) Go语言        项目链接:https://github.com/golang/go

3) Kubernetes 项目链接:https://github.com/kubernetes/kubernetes


使用Go语言进行开发的大公司:Google、Facebook、腾讯、百度、七牛云、京东小米等等国内的大厂。

 

参考李文周的博客进行环境搭建等基础性工作,Go语言教程,https://www.liwenzhou.com/posts/Go/go_menu/

 

Go环境搭建

安装还是很容易的,使用各系统下的安装包直接下一步下一步就很顺利的安装了,官方包下载地址:

Go官方镜像站(推荐):https://golang.google.cn/dl/


环境配置:

GOROOT和GOPATH都是环境变量,其中GOROOT是我们安装go开发包的路径,而从Go 1.8版本开始,Go开发包在安装完成后会为GOPATH设置一个默认目录,参见下表GOPATH在不同操作系统平台上的默认值,可以默认,不做修改也是可以的。

平台

GOPATH默认值

举例

Windows

%USERPROFILE%/go

C:\Users\用户名\go

Unix

$HOME/go

/home/用户名/go


可以执行下面的命令修改GOPROXY:

go env -w GOPROXY=https://goproxy.cn,direct


IDE安装,如果你习惯Visual studio的话,可以使用Visual studio作为开发IDE,MAC下安装Go的插件可能会出现xcrun: error: invalid active developer path, missing xcrun的问题,解决方法,重装xcode command line:

xcode-select --install


然后重新安装插件就可以了



运行Helloworld

运行前,了解下Go语言的包管理等概念,如果是使用Visual studio的话,只需要选择一个保存go代码的文件夹,然后新建一个main.go的文件:

package main

import ( 
    "fmt" 
)


func main() {
    fmt.Println(“helloworld!”)
}


点运行的时候,会提示缺少launch.json,根据提示自动创建一个,helloworld就成功打印出来了!



关于Go的周边背景和使用体验什么的,建议可以多从不同的渠道了解一些,比方大牛:左耳朵耗子在2012年就写过Go的入门文章,建议一读。陈皓这两篇文章的目录如下:GO 语言简介(上)— 语法

目录

Hello World

运行

自己的package

fmt输出格式

变量和常量

数组

数组的切片操作

分支循环语句

关于分号

map

指针

内存分配

函数

结构体

结构体方法

接口和多态

错误处理 – Error接口

错误处理 – Defer

错误处理 – Panic/Recover

 

GO 语言简介(下)— 特性

目录

goroutine

goroutine的并发安全性

原子操作

Channel 信道

定时器

Socket编程

系统调用

执行命令行

命令行参数

一个简单的HTTP Server


从上面的目录,如果花半小时看完,多少能对Go语言的全貌有了个基本的认识!


这两天接触后,对Go的一个理解:

1、Go是静态强类型的语言,可以理解为变量声明时必须使用指定类型,例如整型、字符串、布尔型和数组等,当然Go也提供了动态类型推导的语法支持;

2、Go是编译型语言,Go代码编译后直接是机器码,可以直接运行;

3、Go语言变量存在基本类型、指针类型、引用等类型,对于指针类型、或者容器类型的对象,必须先申请内存,否则会抛出异常;

4、函数与方法有区别,函数作用域是全局的,方法只作用于特定对象;



呱牛笔记

请先登录后发表评论
  • 最新评论
  • 总共0条评论