前言
- 本篇来学习下golang中的变量定义和使用
变量定义
- 变量:在程序运行过程中其值能够改变的量成为变量变量存在内存中
- 变量声明 :var 变量名 数据类型
- 变量定义:var 变量名 数据类型=值
package main import "fmt" func main() { // 声明变量 // 格式: var 变量名 数据类型 var a int // 声明变量a,无初始值 默认为0 fmt.Println(a) }
- 变量定义
package main import "fmt" func main() { // 定义变量 // 格式: var 变量名 数据类型 = 变量值 var a int = 28 // 定义变量 fmt.Println(a) }
命名规范
- 只能以子母或下划线开头
- 只能使用字母数字下划线
- 区分大小写
- 不能使用系统关键字
- 见名知义
- 小驼峰式命名法(lower camel case):第一个单词以小写字母开始;第二个单词的首字母大写,例如:aDog
- 大驼峰式命名法(upper camel case):每一个单字的首字母都采用大写字母,例如:FilstName、LastName
自动推导类型
- 变量名 := 变量值
package main import "fmt" func main() { // 计算圆面积和周长 //var PI float64 = 3.1415926 PI := 3.1415926 //var r float64 = 2.5 r := 2.5 //var s float64 //var l float64 // 计算面积 //s = PI * r * r s := PI * r * r // 计算周长 //l = 2 * PI * r l := 2 * PI * r fmt.Println("面积:", s) fmt.Println("周长:", l) // 去市场打2斤酱油,单价为 每斤 5元 w := 2.0 //p := 5 var p float64 = 5 // go语言中不同数据类型不能计算 fmt.Println(w * p) }
多重赋值
- 格式 : 变量1,变量2,… = 值1,值2,…
package main import "fmt" func main() { // 格式 变量1,变量2,... = 值1,值2,... name, age, city := "大海", 28, "北京" fmt.Println(name, age, city) // 交换a,b值 // 1. 通过中间值 temp a, b := 10, 20 //temp := a //a = b //b = temp //fmt.Println(a, b) // 2. 加减计算 //a = a + b //b = a - b //a = a - b //fmt.Println(a, b) // 3. 多重赋值交换变量的值 a, b = b, a fmt.Println(a, b) // _ 匿名变量 q, _, w := 1, 2, 3 fmt.Println(q, w) }
格式化输出
/* @Time : 2023/2/5 @Author : 大海 */ package main import "fmt" func main() { // Println 输出自动换行 fmt.Println("hello go!") fmt.Println(666) fmt.Println(3.14) // Print 输出不自动换行 fmt.Print("hello go!") fmt.Print(666) fmt.Print(3.14) // Printf name := "大海" age := 28 c := 666 d := 3.14159 fmt.Printf("%s\n", name) fmt.Printf("%d\n", age) fmt.Printf("==%05d==\n", c) // %f 默认保留6位小数 %.3f 保留三位小数,对第4位四舍五入 fmt.Printf("%.3f\n", d) // 声明 布尔类型变量,默认为false var test bool test = true fmt.Println(test) fmt.Printf("%t\n", test) var city string city = "北京" fmt.Printf("%s\n", city) var i byte i = 'a' fmt.Println(i) // 输出ASCII码值 fmt.Printf("%c", i) // 输出字符串 }
接收输入
/* @Time : 2023/2/5 @Author : 大海 */ package main import "fmt" func main() { //var a int // & 取地址运算符 //fmt.Scan(&a) //fmt.Println(a) %p 输出一个数据对应的内存地址 //fmt.Printf("%p", &a) // 空格或回车作为接收结束 //var str string //fmt.Scan(&str) //fmt.Println(str) // 接收两个数据 var s1, s2 string fmt.Scan(&s1, &s2) fmt.Println(s1) fmt.Println(s2) }