赋值及内存相关
当定义了变量name,并对齐进行了赋值,如果令另一个变量name2等于name,会在内存区开辟一块新的内存,二者虽然存储的字符串相同,但是地址是不一样的。 (与Python不同)
使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。【值类型】
常量
同其他语言一样,常量就是定义之后不可被修改的变量。
package main
import "fmt"
func main() {
// 定义变量
//var name string = "邱晨玮"
//var name = "邱晨玮"
name := "邱晨玮"
name = "qcw"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
}
因式分解定义法
package main
import "fmt"
func main() {
// 定义变量
//var name string = "邱晨玮"
//var name = "邱晨玮"
name := "邱晨玮"
name = "qcw"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
// 常量因式分解
const (
v1 = 123
v2 = 456
pi = 9.9
)
fmt.Println(v1, v2, pi, gender)
}
全局变量定义
package main
import "fmt"
const Data = 999
const (
pi = 3.1415926
gender = "男"
)
func main() {
// 定义变量
//var name string = "邱晨玮"
//var name = "邱晨玮"
name := "邱晨玮"
name = "qcw"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
// 常量因式分解
const (
v1 = 123
v2 = 456
//pi = 9.9
)
fmt.Println(v1, v2, pi, gender)
}
iota数据类型
一般来说可有可无,通常在声明常量时充当计数器的作用。
package main
const (
monday = iota + 1
tuesday
wednesday
thursday
friday
saturday
sunday
)
const (
n1 = iota
n2
n3
)
func main() {
// iota
// 示例1
/*
const (
v1 = 1
v2 = 2
v3 = 3
v4 = 4
v5 = 5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例2
/*
const (
v1 = iota
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例3
/*
const (
v1 = iota + 2
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例4:
/*
const (
v1 = iota + 2
_
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
}
输入
让用户输入语句,从而完成项目的交互。
通常有三种输入语句的定义方法:
- fmt.Scan
-
package main import "fmt" func main() { // 示例1:fmt.Scan /* var name string fmt.Println("请输入用户名:") fmt.Scan(&name) fmt.Printf(name) */ // 示例2:fmt.Scan var name string var age int fmt.Println("请输入用户名:") // 当使用Scan时,会提示用户输入 // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息 _, err := fmt.Scan(&name, &age) if err == nil { fmt.Println(name, age) } else { fmt.Println("用户输入数据错误", err) } // 特别说明:fmt.Scan 要求输入两个值,必须输入两个,否则他会一直等待。 }
- fmt.Scanln
-
package main import "fmt" func main() { // 示例1:fmt.Scanln /* var name string fmt.Print("请输入用户名:") fmt.Scanln(&name) fmt.Printf(name) */ // 示例2:fmt.Scanln var name string var age int fmt.Print("请输入用户名:") // 当使用Scanln时,会提示用户输入 // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息 count, err := fmt.Scanln(&name, &age) fmt.Println(count, err) fmt.Println(name, age) // 特别说明:fmt.Scanln 等待回车。 }
- fmt.Scanf
-
package main import "fmt" func main() { var name string var age int fmt.Print("请输入用户名:") _, _ = fmt.Scanf("我叫%s 今年%d 岁", &name, &age) fmt.Println(name, age) }
条件语句
if-else语句
if 条件 {
成立后,此代码块执行
}else{
不成立,此代码块执行
}
----------------------------
if 条件 {
成立后,此代码块执行
}
eg:
package main
func main() {
/*
if true {
fmt.Println("666")
}else{
fmt.Println("999")
}
*/
/*
if 1 > 2 {
fmt.Println("666")
} else {
fmt.Println("999")
}
*/
/*
flag := false
if flag {
fmt.Println("条件成立")
}else{
fmt.Println("条件不成立")
}
*/
// 练习题1:用户输入姓名,判断是否正确
/*
var name string
fmt.Print("请输入姓名:")
fmt.Scanln(&name)
if name == "alex" {
fmt.Println("用户名输入正确")
} else {
fmt.Println("用户名输入错误")
}
*/
// 练习题2:用户输入数字,判断奇数、偶数
/*
var number int
fmt.Print("请输入数字:")
fmt.Scanln(&number)
if number % 2 == 0{
fmt.Println("您输入的是偶数")
}else{
fmt.Println("您输入的是奇数")
}
*/
// 练习题3:用户和密码,判断用户名密码是否正确。
/*
var username, password string
fmt.Print("请输入用户名:")
fmt.Scanln(&username)
fmt.Print("请输入密码:")
fmt.Scanln(&password)
if username == "alex" && password == "sb" {
fmt.Println("欢迎登录pornhub")
} else {
fmt.Println("用户名或密码错误")
}
*/
// 练习题4:请输入用户名校验是否是VIP
/*
var username string
fmt.Print("请输入用户名:")
fmt.Scanln(&username)
if username == "alex" || username == "eric" {
fmt.Println("天上人间大VIP")
} else {
fmt.Println("屌丝")
}
*/
}
if-else多条件判断
if 条件A{
...
}else if 条件B{
...
}else if 条件C{
...
}else{
...
}
eg:
package main
import "fmt"
func main() {
var length int
fmt.Print("请输入你的长度:")
fmt.Scanln(&length)
if length < 1 {
fmt.Println("没用的东西,还特么是坑")
} else if length < 6 {
fmt.Println("刚刚能用")
} else if length < 18 {
fmt.Println("生活和谐")
} else {
fmt.Println("太特么大了")
}
}
条件语句的嵌套使用
package main
import "fmt"
func main() {
fmt.Println("欢迎致电10086,1.话费相关;2.业务办理;3.人工服务。")
var number int
fmt.Scanln(&number)
if number == 1 {
fmt.Println("话费服务,1.交话费;2.查询。")
var n1 int
fmt.Scanln(&n1)
if n1 == 1 {
fmt.Println("缴话费啦")
} else if n1 == 2 {
fmt.Println("查话费了")
} else {
fmt.Println("输入错误")
}
} else if number == 2 {
fmt.Println("业务办理")
} else if number == 3 {
fmt.Println("人工服务")
} else {
fmt.Println("输入错误")
}
// 建议:条件的嵌套不要太多
}