Go语言初识(二)

探讨Go语言中变量赋值、内存分配、常量与值类型,以及用户输入操作和条件语句的实例。
摘要由CSDN通过智能技术生成

赋值及内存相关

当定义了变量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("输入错误")
	}
	
	// 建议:条件的嵌套不要太多
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值