侧边栏壁纸
博主头像
CoderKui

坐中静,舍中得,事上练

  • 累计撰写 51 篇文章
  • 累计创建 69 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Golang语言快速学习

CoderKui
2022-11-09 / 0 评论 / 2 点赞 / 367 阅读 / 1,012 字 / 正在检测是否收录...

前言:
本文帮助你快速上手Go语言
需要在有其他语言的基础上进行学习

一、Go语言简介

GO优势

  • 极简单的部署方式
    • 可直接编译成机器码
    • 不依赖其他库
    • 直接运行即可部署
  • 静态类型语言
    • 编译的时候检查出来隐藏的大多数问题
    • 通过 go build 编译
  • 语言层面的并发
    • 天生的基因支持
    • 充分利用多核
  • 强大的标准库
    • runtime系统调度机制
    • 高效的GC垃圾回收
    • 丰富的标准库
  • 简单易学
    • 仅25个关键字
    • C语言简洁基因,内嵌C语法支持
    • 面向对象特征(封装、继承、多态)
    • 跨平台

GO适合做什么

  • 云计算基础设施领域:docker、kubernetes、etcd、consul、cloudflare CDN
  • 基础后端软件:tidb、influxdb、cockroachdb
  • 微服务:go-kit、micro、monzo bank的typhon、bilibili等
  • 互联网基础设施:以太坊、hyperledger

Go语言的知名产品:docker、kubernetes

GO的不足之处

  • 包管理,大部分包都在Github上,即大部分包是第三方包
  • 无泛化类型 (目前1.18版本已添加泛化类型)
  • 所有Exception都用Error来处理(争议较大)
  • 对C的降级处理,并非无缝,没有C降级到asm那么完美(序列化问题)

二、开发环境搭建

环境配置

go语言官网:https://go.dev/

官方文档:https://go.dev/doc/

  • 方式一:下载安装包进行安装(推荐)

  • 方式二:下载源码包,手动配置环境变量

IDE推荐

三、快速开始

HelloWorld,创建hello.go文件

package main //程序的包名

// 导包
import (
	"fmt"
	"time"
)

/* 多行注释方式,此导包方式与上面的方式相似,推荐上面的方式
import "fmt"
import "time"
*/

// main函数
func main() { //函数的左花括号必须一定与函数同行,这是Go语言的强制规定
	// golang中的表达式末尾可以加分号; 也可以不加(推荐)
	fmt.Println("hello GO!")

	time.Sleep(1 * time.Second)
}

⭐️在目录下执行以下命令运行程序:

go run hello.go

⭐️也可以先build,生成二进制文件后,手动运行

go build hello.go
./hello

四、变量的声明方式

局部变量的四种声明方式

package main

import "fmt"

/*
四种变量的声明方式
*/
func main() {
	// 方法一:声明一个变量,默认值是0
	var a int
	fmt.Println("a = ", a)
	fmt.Printf("type of a = %T\n", a) // 打印变量a的类型

	// 方法二:声明一个变量,初始化值
	var b string = "我是字符串"
	fmt.Println("b = ", b)
	fmt.Printf("type of b = %T\n", b)

	// 方式三:在初始化的时候,可以省去数据类型,通过值自动匹配当前的变量类型
	var c = 200
	fmt.Println("c = ", c)
	fmt.Printf("type of c = %T\n", c)

	// 方法四:(常用的方法) 省去var关键字,直接自动匹配
	e := 3.14
	fmt.Println("e = ", e)
	fmt.Printf("type of e = %T\n", e)
}

全局变量

package main

import "fmt"

/*
参考声明局部变量的方法
声明全局变量:方法一、二、三
方法四不支持声明全局变量
*/
var global_a int = 100

func main() {
	// 全局变量
	fmt.Println("global_a = ", global_a)
	fmt.Printf("type of globale_a = %T\n", global_a)
}

多变量声明方式

package main

import "fmt"

/*
多变量声明方式
*/
func main() {
	// 声明多个变量
	var xx, yy int = 11, 22
	fmt.Println("xx = ", xx, "yy = ", yy)
	var kk, ll = 33, "hello"
	fmt.Println("kk = ", kk, "ll = ", ll)

	// 多行多变量声明方式
	var (
		vv int  = 100
		jj bool = true
	)
	fmt.Println("vv = ", vv, "jj = ", jj)
}

更新中…

2

评论区