快捷键位置:File->Preferences->Keyboard Shortcuts
常用快捷键:
修改快捷键:
快速生成代码片段:
在终端中直接输入go help
即可显示所有的go命令及相应命令的功能介绍
就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字
标识符组成:
1、标识符由数字、字母、下划线组成
2、只能以字母和下划线开头
3、标识符区分大小写
变量是计算机语言中能存储计算结果或能表示值的抽象概念。不同变量保存的数据类型可能会不一样
声明变量
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)
}
常量就是在程序编译阶段就确定下来的值,程序在运行时无法改变该值。在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
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("%%")
}
package main
import "fmt"
func main() {
b := true
fmt.Printf("\nb: %t\n", b)
}
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进制输出
}
package main
import "fmt"
func main() {
x := 100
p := &x
fmt.Printf("p: %p\n", p) //输出指针地址
}
输出结果:
p: 0x140000b2008