注释
package main
//我是单行注释
import "fmt"
/*
我是多行注释
我是多行注释
*/
/*
这是一个main函数,这个是go语言启动的入口
*/
func main() {
//fmt.prinln:打印一句话,然后执行完毕后进行换行
fmt.Println("Hello World!")
}
变量
变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词首字母大写。例如:userFiles、systemInfo。
变量初始化标准格式
var 变量名 类型 = 值(表达式)
package main
import "fmt"
func main() {
var name string = "lixiang"
fmt.Println(name)
}
代码理解
🍇变量的定义
var name type
- var 声明变量的关键字
- name 变量名字
- type 代表变量的类型
举例:
//定义一个字符串变量 name
var name string
//定义一个数字类型变量 age
var age int
💚定义多个变量
package main
import "fmt"
// 定义多个变量
func main() {
//var定义变量,如果没有赋值,变量就默认是这个类型的默认值
var (
name string
age int
addr string
)
//string:默认值 空
//int 默认值 : 0
fmt.Println(name, age, addr)
}
短变量声明并初始化
//:= 自动推导
name := "lixiang"
age := 3
fmt.Print(name, age)
fmt.Printf("%T,%T", name, age)
🍇理解变量(内存地址)
var num int
num = 100
fmt.Printf("num:%d,内存地址:%p", num, &num) //取地址符 &变量名
num = 200
fmt.Printf("num:%d,内存地址:%p", num, &num)
🍇变量的交换
package main
import "fmt"
func main() {
// a = 100
// b = 200
// temp = 0
// 1. temp = a 其他语言交换方法,常见方式是定义中间变量
// 2. a = b
// 3. b = temp(a)
var a int = 100
var b int = 200
//在Go语言中,可以直接实现换值,不需要中间变量
b, a = a, b
fmt.Println(a, b)
}
🍇匿名变量
匿名变量的特点是一个下画线"_",本身就是一个特殊字符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃。
package main
import "fmt"
func test() (int, int) {
return 100, 200
}
func main() {
a, _ := test()
_, b := test()
//第一行代码只需要获取第一个返回值,所以第二个返回值定义为匿名变量_
//第二行代码只需要获取第一个返回值,所以第二个返回值定义为匿名变量_
fmt.Println(a, b)
}
匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。
🍇变量的作用域
局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。
package main
import (
"fmt"
)
func main() {
//声明局部变量a和b并赋值
var a int = 3
var b int = 4
//声明局部变量c并计算a和b的和
c := a + b
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
局部变量
在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。
全局变量声明必须以var关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。
package main
import "fmt"
//声明全局变量
var c int
func main() {
//声明局部变量
var a, b int
//初始化参数
a = 3
b = 4
c = a + b
fmt.Printf("a = %d,b = %d, c = %d\n", a, b, c)
}
🍇常量
常量的应用
package main
import "fmt"
func main() {
const URL string = "www.baidu.com" //带类型的是显示定义
const URL2 = "www.baidu.com" //不带类型的是隐式定义
const a, b, c = 5.19, "lixiang", true //同时定义多个常量
fmt.Println(URL)
fmt.Println(URL2)
fmt.Println(a, b, c)
}
🍇iota
iota,特殊常量,依次计数,常量计数器。iota在const关键字出现时将被重置为0
package main
import "fmt"
func main() {
const (
//iota依次计数 常量计数器
a = iota //0
b
c
d = "haha"
e
f = 100
g
h = iota
i
)
const (
j = iota
k
)
fmt.Println(a, b, c, d, e, f, g, h, j, k)
}
运行结果