前言
这是我参与「第五届青训营 」伴学笔记创作活动的第 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。
写在最后
如果本文哪里有写错,麻烦请指出来,感谢。这里我也推荐大家多写笔记,写笔记是一个很好的习惯,可以帮助我们更好的吸收和理解学习的新知识,这是我发布的第二篇笔记,接下来会坚持不断发布,新的一年大家一起加油!