注释
给别人看的,机器并不会执行这行语句
1.单行注释
// 我是单行注释
2.多行注释
/*
我是多行注释
我是多行注释
我是多行注释
我是多行注释
*/
// 这是一个main函数,这个是go语言启动的入口
func main() {
//fmt.Println :打印一句话,然后执行完毕后,进行换行
fmt.Println("Hello,Word")
}
变量
字面理解为变量就是会变化的量
package main
import "fmt"
func main() {
var name string = "DuPeng"
fmt.Println(name)
}
注意:如果在点击这里执行会出错
出错提示:项目里有多个main方法
正确执行方式:鼠标单击右键执行,一定要在main方法外! 一定要在main方法外 !一定要在main方法外,重要事情说三遍
变量的定义
var name type
name
name 为变量,它指向的是地址,而这个地址指向内存空间,而内存空间的数据是可以更换的
var
声明变量的关键字,固定的写法,记住即可
type
代表变量的类型
定义多个变量
package main
import "fmt"
// “=” 赋值符号 将等号右边的值赋值给等号左边
func main() {
var (
//姓名
name string
//年龄
age int
//地址
addr string
)
//string 默认值:空
//int 默认值:0
fmt.Println(name, age, addr)
}
变量的初始化
标准格式
var 变量名 类型 =值(表达式)
也可以先定义,再赋值
package main
import "fmt"
func main() {
// “=” 赋值符号
var (
//姓名
name string
//年龄
age int
//地址
addr string
)
name = "dupeng"
age = 22
addr = "成都"
//string 默认值:空
//int 默认值:0
fmt.Println(name, age, addr)
}
短变量声明并初始化
import "fmt"
func main() {
// :=自动推导
name := "dupeng"
age := 18
fmt.Println(name, age)
//打印输出name和age的类型
fmt.Printf("%T,%T", name, age)
}
打印输出声明类型
内存地址
打印内存地址
import "fmt"
func main() {
var num int
num = 100
fmt.Printf("num:%d,内存地址:%p", num, &num)
}
不要忘记取地址符
值发生变换而内存地址不会发生改变,但每次重启系统就会重新分配一个新的地址空间
变量交换
package main
import "fmt"
func main() {
/*
在其他语言中 变量的交换为下列代码
a=100
b=200
temp=0
temp=a
a=b
b=temp
*/
// 而在go语言中
var a int = 100
var b int = 200
b, a = a, b
fmt.Println(a, b)
}
匿名变量
特点是"_","_"本身就是一个特殊字符
被称为空白标识符,任何赋值给这个标识符的值都会被抛弃,这样可以加强代码的灵活性
package main
import "fmt"
func test() (int, int) {
return 100, 200
}
func main() {
a, b := test()
fmt.Println(a, b)
}
当我们不想接收第二个值时可以废弃掉
package main
import "fmt"
func test() (int, int) {
return 100, 200
}
func main() {
a,_ := test()
fmt.Println(a)
}
变量的作用域
一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。
局部变量
在函数体声明的变量,只作用在函数体内
全局变量
在函数体外声明的变量为全局变量
全局变量必须以var关键字开头,如果要在外部包使用全局变量的首字母必须大写