走进Go语言基础入门|青训营笔记

77 阅读3分钟

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

使用Go语言的公司

在视频中,老师列举了一些使用了Go语言的公司,其中包括有字节跳动、腾讯、美团、滴滴、百度、谷歌、脸书、七牛云、哔哩哔哩、PingCAP等公司

字节使用Go语言的原因

1、开始使用的Python性能比Go语言弱

2、C++不适合在线Web服务

3、早期团队没有Java背景

4、性能比较好

5、部署简单、学习成本低

6、内部RPC和HTTP框架的推广

开发环境

这里选用了Goland作为代码编辑器,在官网下载安装Go的安装包安装编译环境。

图片.png

Hello World

课程以输出Hello World的示例程序来学习Go的基础语法

package main

import "fmt"

func main() {
   fmt.Println("Hello World")
}

第一行指定包名,下面通过import引入要使用的api所在的包

主程序中通过fmt.Println输出Hello World到控制台中

基础语法

下面通过一些例子说明一下go的语法

变量


var a = "string"

var b, c int = 1, 2

var d = true

var e float64

var f = float32(3)

g := a + " append"

const str string = "as"

const h = 1200

const t = 3e20 / h

go可以自动推到数据的类型,const没有确定的类型,可以通过上下文自动推到数据类型

if else

if a == 0 {
   fmt.Print(a)
} else {
   fmt.Println(a)
}

在这个语句中的判断条件是不需要添加括号的,如果添加了,go会自动帮你删除。判断条件语句必须独立一行

循环

for i := 0; i < 10; i++ {
   fmt.Print(i)
}

同样的在go中,for循环语句也不需要添加括号,可以通过break跳出循环,continue提前继续循环。

分支语句

var a int
switch a {
case 1:
   fmt.Print(1)
case 2:
   fmt.Println(2)
default:
   fmt.Print("default")
}

go的分支语句与c++不一样的地方在于,每一个分支不需要添加break,会自动执行完跳出

数组


//定义并初始化数组的几种方式
	var arr [3]int          //默认数组元素为0
	var arr[0] = 10
	var arr0 [3]int = [3]int{1, 2, 3}
	var arr1 = [3]int{5, 6, 7}      //利用类型推倒
	var arr2 = [...]int{8, 9, 10}
	var arr3 = [...]int{1: 100, 0: 500, 2: 999}

切片

切片的特点

1.切片是一个引用类型,切片的长度是可以变化的,而数组的长度是固定的

2.切片是数组的一个引用,因此是引用类型,遵守引用传递机制

3.切片的使用和数组类似,比如遍历切片,访问切片的元素等

4.通过make创建切片对应数组由make底层维护,对外不可见

var arr = [5]int{1, 23, 34, 66, 43}
	//定义一个切片,让切片引用一个已创建好的数组
	//表示 slice 引用到 arr 这个数组
	//引用范围数组下标[1,3)
	slice := arr[1:4] //[:]代表全部,[start:]代表开始到结束
	fmt.Println(slice)
	fmt.Println("容量 =", cap(slice)) //一般为切片元素个数的2倍,可动态变化

	//第二种方式使用make
	var slice1 = make([]float64, 5, 10) //必须为[],参数为数据类型,大小,容量
	fmt.Println(slice1)

	//第三种方式,原理类似make
	var slice2 = []int{1, 2, 3}
	fmt.Println(slice2)

	//遍历切片
	for i := 0; i < len(slice); i++ {
		fmt.Println(slice[i])
	}
	for i, v := range slice {
		fmt.Printf("i = %v,v = %v\n", i, v)
	}

	//切片的动态追加,底层原理是新建数组,然后切片指向新的数组
	slice = append(slice, 88, 99)
	fmt.Println(slice)

后面还介绍了结构体、方法的基本定义以及如何使用。

个人感想

虽然之前已经学习过golang的基本语法,但是通过本次课程,回忆起了go的基本语法的相关知识,并且加深了记忆。