GO语言基础入门2 | 青训营笔记

119 阅读3分钟

前言

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天,其实第五届青训营已经正式开课好多天了,但这些笔记是早就记录好的,笔记现在才发出来是因为一直在补充,所以现在才发出来,包括我听完课之后的总结和平时自己的积累,分享出来给有需要的朋友。

本文内容

本文将涉及到go语言的代码基本格式,还有基础语法的介绍和使用,比如编写第一个程序、程序如何运行、变量操作、键盘输入与打印输出、字符串格式化等,有助于小白更快的了解go。

一、Go语言基础

编写第一个程序
package main 
​
import (
    "fmt"
)
​
func main() {
    fmt.Println("Hello, World!")
}

跟其他语言一样,GO的hello world程序也是非常简单,程序主要有三步

1.声明是包名为main 2.引入需要用的包 3.打印输出hello world

程序运行

主要有两种运行方式,一是直接在控制台运行,二是把程序编译成可执行文件后再运行。

1.在控制台运行命令
go run 文件名.go
2.编译成exe可执行文件
go bulid 文件名.go

编译成功后的可执行程序默认名称为文件名.exe,如果需要自定义名称可以替换成执行以下编译命令

go bulid -o 软件名.exe 文件名.go
3.执行速度

其实两种执行方式速度都差不多,因为第一种方式虽然没有编译成exe,但第一种方式在执行时内部其实也是先进行编译的,所以总的来说速度两者差不多。

但是编译exe后的go程序比没有编译直接执行的速度更快。

4.注意事项

1.只有main包才是可执行文件 且一个文件夹内只能有一个main包,如果有两个main包在同一个文件夹,IDE运行会报错。

2.文件名与包名无关,可相同也可不同,但推荐名称统一点比较好。

GO变量

1.声明定义变量

方式一

var name string = "jack"
var age int = 10

方式二

var name = "jack"
var age = 10

方式三

name := "jack"
age := 10

注意:方式三只能在函数中使用这种定义方法

2.变量的定义域

在函数外面声明/定义的变量叫全局变量,且如果变量名首字母大写则作用域在整个程序都有效。

比如下面的age只能在本包使用,而Name可以引用到其他包使用

var age string  //在本包可以使用
var Name string //在别的包也可以使用

输入与输出

1.键盘输入

方式一 使用fmt的scan方法

fmt.Scan(&score)
fmt.Scanln(&score)
fmt.Scanf("%v", &score)

方式二 使用bufio

reader := bufio.NewReader(os.Stdin)
fmt.Println("请输入你想要输入的内容,按回车结束")
fmt.Print("-> ")
text, err := reader.ReadString('\n')
if err != nil {
panic(fmt.Errorf("发生致命错误: %w \n", err))
}
fmt.Println("刚接收到的内容是:", text)
2.打印输出

使用fmt以下有三种方式打印输出

var a int = 1
fmt.Println("a的值为:", a) //默认末尾带\n换行
fmt.Printf("a的值为:%v\n", a)
fmt.Print("a的值为:", a)

其实fmt.Printf是格式化输出,包括%v 默认格式、 %T 输出变量类型、 %p输出变量地址、 %c输出字符型 、%d输出整型、 %s输出字符串型等格式化输出参数。

格式化字符

使用fmt.Sprint将int类型强制转为string类型

var a string = "abc"
a += fmt.Sprint(1)
fmt.Printf("a的值是%v类型是%T", a, a)

空值表示

go中空表示为nil,就如null。

写在最后

如果本文哪里有写错,麻烦请指出来,感谢。这里我也推荐大家多写笔记,写笔记是一个很好的习惯,可以帮助我们更好的吸收和理解学习的新知识,这是我发布的第二篇笔记,接下来会坚持不断发布,新的一年大家一起加油!