目录
Hello World!
包
标准库
变量声明
循环
if判断
switch
数组
最近参加字节跳动的青训营项目,因为字节现在基本全是Go语言,所以他们的后端路线以Go语言为主要开发语言,以下是我的学习笔记,因为有C++和java的功底,我学习起来还是很快的
Hello World!
//包名
package main//引入Go语言标准库
import ("fmt"//包含控制输出的语句
)//函数
func main() {fmt.Println("hello world")
}
我个人感觉Go语言就是汲取各个编程语言的优点糅合而成,例如它和python一样不需要在行尾写分号,但是又有C++中的花括号来控制语句层次,对掌握好几种编程语言的人来说入门Go语言很快,对初学者也很友好
包
在 Go 语言中,每个 Go 程序文件都必须属于一个包。
包是 Go 语言组织代码的方式,它有助于代码的模块化、可维护性和可重用性。
一个 Go 程序最少包含一个包声明,一般是package main
用于可执行程序,或者其他名称用于库包。
标准库
和其他语言类似,Go中也有官方提供的标准库,格式类似以下(有点像Java)
import ("time"//包含本地时间等api"fmt"//包含输出相关的函数......
)
变量声明
Go语言支持var语言自动推导类型,也可以自己定义类型,形式多样,一般情况下直接用var即可
定义格式如下几种
//var关键字自动推导变量卡类型var a = "initial" // var +变量名 +变量类型 的形式var b, c int = 1, 2// var + 变量名 + 变量类型var e float64// 变量名 := 变量值f := float32(e)//字符串类型可以通过+拼接g := a + "foo"
循环
Go中的循环只有for一种,并没有while,for循环的格式跟C++很类似,区别就是for后的控制语句不需要加括号,如下
for j := 7; j < 9; j++ {fmt.Println(j)}
for后面可以不加控制语句,代表这是一个无限循环,当然可以用break跳出,也有continue等控制语句
for {fmt.Println("这是一个无限循环")break}
if判断
if判断语句和C++的也很类似,唯一区别就是 if后面的判断语句不需要加括号,和for循环一样,都是把C++中有括号的地方给去掉了
if 7%2 == 0 {fmt.Println("7 is even")} else {fmt.Println("7 is odd")}
switch
跟if和for循环一样,形式上也是把后面的括号给去掉了,还有一个区别就是Go语言中的switch匹配到对应的case并执行完对应的语句后不会进入下一个case而是直接退出,这就不需要我们在每个case后面加break了,我觉得这是一个很好的改进
a := 2switch a {case 1:fmt.Println("one")case 2:fmt.Println("two")//执行完case 中的代码后直接退出switch,不会进入下一个casecase 3:fmt.Println("three")case 4, 5:fmt.Println("four or five")default:fmt.Println("other")}
当然和其他语言的一大区别是:switch后可以不写值,作用类似 if else,就像下面这样
t := time.Now()switch {case t.Hour() < 12:fmt.Println("It's before noon")default:fmt.Println("It's after noon")}
数组
数组定义和变量类似,都可以先声明在赋值,或者定义的时候就初始化,在Go中可以直接通过关键字 len(数组名)的方式获取数组的长度
//先声明,后赋值var a [5]inta[4] = 100//直接通过变量名访问其中的变量fmt.Println("get:", a[2])//获取数组a的长度fmt.Println("len:", len(a))//声明并初始化b := [5]int{1, 2, 3, 4, 5}