Go 语言基础 | 青训营笔记

172 阅读3分钟

Go 语言基础

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

基本对着视频走进 Go 语言基础语言 - 掘金 (juejin.cn) ,然后做一些必要补充。

什么是 Go 语言

更准确的说是为什么选择 go

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台
  8. 垃圾回收

补充 Go 起源 Go语言起源 · Go语言圣经 (studygolang.com)

入门

开发环境

直接 Goland 就行了,可以申请学生包,教程网上一大堆。

基础语法

Hello World

第一个可运行程序必然是 Hello World

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

变量

go 是强类型语言。

视频实在太简单了,补充一下。

变量声明

变量声明的一般语法如下:

var 变量名字 类型 = 表达式

其中 类型= 表达式 两个部分可以省略其中的一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。如果初始化表达式被省略,那么将用零值初始化该变量。

下面给出各种类型的零值:

  • 数值类型变量对应的零值是0
  • 布尔类型变量对应的零值是false
  • 字符串类型对应的零值是空字符串
  • 接口或引用类型(包括slice、指针、map、chan和函数)变量对应的零值是nil。
  • 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值。

因此在Go语言中不存在未初始化的变量。

// 如果初始化表达式被省略,那么将用零值初始化该变量。  
var a int  
fmt.Println(a) // 0

很快乐的一点是可以在一个声明语句中同时声明一组变量,或用一组初始化表达式声明并初始化一组变量。如果省略每个变量的类型,将可以声明多个类型不同的变量(类型由初始化表达式推导):

// 可以在一个声明语句中同时声明一组变量,或用一组初始化表达式声明并初始化一组变量。
var i, j, k int                 // int, int, int  
var b, f, s = true, 2.3, "four" // bool, float64, string

一组变量也可以通过调用一个函数,由函数返回的多个返回值初始化:

var f, err = os.Open(name) // os.Open returns a file and an error

简短变量声明

函数内部,有一种称为简短变量声明语句的形式可用于声明和初始化局部变量。它以 名字 := 表达式 形式声明变量,变量的类型根据表达式来自动推导。

// 简短变量声明,只能在函数内部使用  
i := 100

和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:

// 和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量  
i, j := 0, 1

记住 := 是一个变量声明语句,而 = 是一个变量赋值操作。使用 := 时,左边一定存在未声明变量。如果有一些已经在相同的词法域声明过了,那么简短变量声明语句对这些已经声明过的变量就只进行赋值行为。

指针

懒得写了,字数够了。有空再写,都是基础。