一、Golang介绍
二、Golang开发工具
- vim
- sublime
- atom
- LiteIDE
- eclipse
- goland
- vscode
2.1 vscode的快捷键
快捷键位置:File->Preferences->Keyboard Shortcuts
常用快捷键:
- 行注释 ctrl + /
- 块注释 shift + alt + a(可修改为 ctrl + shift + /)
- 全选 ctrl + a
- 复制 ctrl + c
- 粘贴 ctrl + v
- 删除行 ctrl + shift + k
- 查找文件 ctrl + e
- 打开设置命令行 ctrl + shift + p
修改快捷键:
- 打开快捷键 File->Preferences->Keyboard Shortcuts
- 双击要修改的快捷键
- 键盘输入想要使用的快捷键
快速生成代码片段:
- pkgm: main包+main主函数
- ff:fmt.Printf(“”, var)
- for:for i := 0; i < count; i++ {}
- forr:for _, v := range v {}
- fmain:func main(){}
- a.print!:fmt.Printf(“a: %v\n”, a)
三、Golang常用命令
在终端中直接输入go help
即可显示所有的go命令及相应命令的功能介绍
- build:编译包和依赖,生成可执行文件
- clean:移除对象文件
- doc:显示包或者符号的文档
- env:打印go的环境信息
- bug:启动错误报告
- fix:运行go tool fix
- fmt:运行gofmt进行格式化
- generate:从processing source生成go文件
- get:下载并安装包和依赖(使用之前,需要用go mod init 工程名)
- install:编译并安装包和依赖
- list:列出包
- run:编译并运行go程序
- test:运行测试
- tool:运行go提供的工具
- version:显示go的版本
- vet:运行go tool vet
三、Golang标识符、关键字、命令规则
3.1 标识符
就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字
标识符组成:
1、标识符由数字、字母、下划线组成
2、只能以字母和下划线开头
3、标识符区分大小写
3.2 变量
变量是计算机语言中能存储计算结果或能表示值的抽象概念。不同变量保存的数据类型可能会不一样
声明变量
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用
声明变量的语法
var 变量名称 变量类型
package main
import "fmt"
func main(){
var name string
var age int
var isstudent bool
}
批量声明
package main
import "fmt"
func main(){
var (
name string
age int
isstudent bool
)
}
变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作,每个变量会被初始化成其类型的默认值,例如:整型和浮点型变量的默认值为0,字符串变量的默认值为空字符串"",布尔型变量默认为false,切片、函数、指针变量的默认为nil
变量初始化语法
var 变量名 类型 = 表达式
package main
import "fmt"
func main(){
var (
name string = "小明"
age int = 18
isstudent bool = true
)
fmt.Println("name: %v\n", name)
fmt.Println("age: %v\n", age)
fmt.Println("isstudent: %v\n", isstudent)
}
类型推导
通过给变量的赋值,即可知道变量类型,从而省略类型
package main
import "fmt"
func main(){
var (
name = "小明"
age = 18
isstudent = true
)
fmt.Println("name: %v\n", name)
fmt.Println("age: %v\n", age)
fmt.Println("isstudent: %v\n", isstudent)
}
初始化多个变量
可以一次初始化多个变量,中间用逗号分隔
package main
import "fmt"
func main(){
var name, age, isstudent = "小明", 18, true
fmt.Println("name: %v\n", name)
fmt.Println("age: %v\n", age)
fmt.Println("isstudent: %v\n", isstudent)
}
短变量声明
在函数内部,可以使用 :=
运算符对变量进行声明和初始化
package main
import "fmt"
func main(){
name := "小明"
age := 18
isstudent := true
fmt.Println("name: %v\n", name)
fmt.Println("age: %v\n", age)
fmt.Println("isstudent: %v\n", isstudent)
}
⚠️:这种方法只适合在函数内部,函数外部不能使用;不用给变量加var 和 类型
匿名变量
如果我们接收到多个变量,有一些变量使用不到,可以使用下划线_表示变量名称,这种变量叫做匿名变量。
package main
import "fmt"
func getTest() (string, int) {
return "小明", 30
}
// func getTest() (name string, age int) {
// return "小明", 30
// }
func main(){
name, _ := getTest()
fmt.Println("name: %v\n", name)
}
3.3 Go语言常量
常量就是在程序编译阶段就确定下来的值,程序在运行时无法改变该值。在Go程序中,常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等
定义常量的语法
定义一个常量使用const关键字,语法如下
const 常量名称 [常量类型] = value
package main
import "fmt"
func main(){
const PI float32 = 3.14
const PI2 = 3.1415
fmt.Println("PI: %v\n", PI)
const (
a = 100
b = 200
)
fmt.Println("a: %v\n", a)
fmt.Println("b: %v\n", b)
const w, h = 200, 100
fmt.Println("w: %v\n", w)
fmt.Println("h: %v\n", h)
}
iota
iota比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0,每调用一次加1。遇到const关键字时被重置为0。
package main
import "fmt"
func main(){
const(
a1 = iota
a2 = iota
a3 = iota
)
fmt.Println("a1: %v\n", a1)
fmt.Println("a2: %v\n", a2)
fmt.Println("a3: %v\n", a3)
}
输出结果:
a1:0
a2:1
a3:2
使用_跳过某些值
package main
import "fmt"
func main(){
const(
a1 = iota
_
a2 = iota
)
fmt.Println("a1: %v\n", a1)
fmt.Println("a2: %v\n", a2)
}
输出结果:
a1:0
a2:2
iota声明中间插队
package main
import "fmt"
func main(){
const(
a1 = iota
a2 = 100
a3 = iota
)
fmt.Println("a1: %v\n", a1)
fmt.Println("a2: %v\n", a2)
fmt.Println("a3: %v\n", a3)
}
输出结果:
a1:0
a2:100
a3:2
四、Golang格式化输出
4.1 占位符
4.1.1 普通占位符
package main
import "fmt"
type WebSite struct {
Name string
}
func main() {
site := WebSite{Name: "ua ua ua"}
fmt.Printf("site: %v\n", site)
fmt.Printf("site: %#v\n", site)
fmt.Printf("site: %T\n", site) //打印类型
a := 100
fmt.Printf("a: %T\n", a)
fmt.Printf("%%")
}
4.1.2 布尔占位符
package main
import "fmt"
func main() {
b := true
fmt.Printf("\nb: %t\n", b)
}
4.1.3 整数占位符
- %b:二进制表示
- %c:相应unicode编码所表示的字符
- %d:十进制表示
- %o:八进制表示
- %q:单引号围绕的字符字面值,由Go安全的转译
- %x:十六进制表示,字母形式为小写 a-f
- %X:十六进制表示,字母形式为小写 A-F
- %U:unicode格式,U+1234,等同于“U+%04X”
package main
import "fmt"
func main() {
i := 8
fmt.Printf("i: %v\n", i) //
fmt.Printf("i: %b\n", i) //二进制的输出
i = 96
fmt.Printf("i: %c\n", i) //字符输出
fmt.Printf("i: %x\n", 1234) //16进制输出
}
4.1.4 浮点数和复数的组成部分(实部和虚部)
- %b:无小数部分的,指数为2的幂的科学计数法
- %e:科学计数法
- %E:科学计数法
- %f:有小数点而无指数
- %g:
- %G:
4.1.5 字符串与字节切片
- %s:输出字符串表示(string类型或[]byte)
- %q:双引号围绕的字符串,由Go安全的进行转义
- %x:十六进制,小写字母,每字节两个字符
- %X:十六进制,大写字母,每字节两个字符
4.1.6 指针
- %p:十六进制表示,前缀0x
package main
import "fmt"
func main() {
x := 100
p := &x
fmt.Printf("p: %p\n", p) //输出指针地址
}
输出结果:
p: 0x140000b2008