package main

import "fmt"

// 根据值自动推导变量类型, 必须放到函数内部 (在包的顶部， 这个是最常用)
// 在程序运行时，是在编译时完成类型推导，运行时分配内存
var (
	score = 99.5
	// skill = "golang"
)

// const 定义常量
// 通常常量大写
// 什么时候需要常量, 当一个值不会被修改时, 使用常量
// 变量时, 做完程序数据存在的
// 常量, 值在编译时就已经确定下来了，被编译成为程序一部分
const (
	PI           = 3.14
	SKILL_GOlANG = "golang"
	SKILL_PYTHON = "python"
)

// var var1 = "hello"
// var var2 = 100
// var var3 = true

func main() {
	// 有一个插槽来存储 用户的数据，或者程序的输入, 这种 插槽叫 变量
	// 变量的声明: var 变量名 变量类型
	// 变量的赋值: 变量名 = 值

	// 名称变量(最麻烦的写法)
	var name string
	name = "bob"

	// 变量的声明和赋值可以合并成一句话
	// var agt int
	// age = 18
	var age int = 18

	// 自动推导变量类型, 只能放到函数内部 (在函数内部，这个是最常用的)
	// := 左侧是变量名, 右侧是值
	country := "china"
	_ = country

	fmt.Println("hello, " + name + "!")
	fmt.Println("age =", age)
	fmt.Println("score =", score)
	fmt.Println("country =", country)

	// hello, bob!
	// age = 18
	// score = 99.5
	// country = china
}
