首页 > 其他分享 >day01 常量和变量

day01 常量和变量

时间:2024-07-01 23:54:19浏览次数:16  
标签:Println 常量 day01 var Printf c3 fmt 变量

go 常量与变量拓展

常量

package main

import (
	"fmt"
	"reflect"
)

var c3 int

func main() {
	// 变量 定义公式: var 变量名 数据类型 = 值
	// 1. go 语言中定义变量 : 通过 var 关键字定义变量,后面跟上变量的类型
	var name string = "张阿三"
	var age int = 20
	fmt.Println(name, age)

	// 2. 定义空变量
	var name1 string // 默认值 为 空字符串
	var age1 int     // 默认值 为 0
	fmt.Println(name1, age1)

	// 3. 定义多个变量
	var (
		name2 string
		age2  int
	)
	// 给 变量 赋值
	name2 = "李啊四"
	age2 = 30
	fmt.Println(name2, age2)
	// 修改变量值
	fmt.Println("修改变量值:")
	name2 = "王啊五"
	age2 = 40
	fmt.Println(name2, age2)

	// 4. 直接定义变量 且 忽略数据类型.  自动推到,一个短变量声明
	name3 := "赵啊六" // := 相当于快速定义变量 ,仅支持go语言中的基本数据类型。
	fmt.Println(name3)

	/*
		// 如果 已经定义的变量,再次使用 := 快速声明,出现异常。因为该变量已经被声明
		var name4 string
		name4:="123"
	*/

	/*
		// 小结:
			1. 定义变量 var 变量名称 数据类型
			2. 给变量赋值,定义的时候可以直接赋值, 或者通过变量名赋值
			3. := 赋值。 如果是基本数据类型,字符串,数字会自动推到出变量数据类型
	*/

	// 5. 变量交换,底层还是引入 第三个变量交换数据
	var a int = 100
	var b int = 200
	fmt.Println("交换前:", a, b)
	b, a = a, b
	fmt.Println("交换后:", a, b)

	// 6. 变量的内存地址
	// 打印变量内存地址方式1: fmt.Printf 格式化输出
	/*
			// fmt.Printf
			- 有多少个 % 占位符,后面要跟多少个变量
			- %d 数值类型 int
			- %s 字符串 string
			- %p 内存地址 . 加上:&变量
		 	- &  取地址符号
	*/

	var num int
	num = 100
	fmt.Println("打印数据类型:", reflect.TypeOf(num)) // 打印数据类型

	fmt.Printf("1数据值=:%d ,内存地址=:%p\n", num, &num)
	fmt.Println("num=", num)
	num = 200
	fmt.Printf("2数据值=:%d ,内存地址:%p\n", num, &num)
	fmt.Println("num=", num)

	// 7.匿名变量
	// 特殊的变量,给匿名变量赋值,该数据就会被丢失,匿名变量不占用内存
	// 格式:_ 下划线开头
	// 在函数中,可以直接使用
	a1, _ := test()
	fmt.Println(a1)

	// 8. 变量的 作用域:局部变量和全局变量
	/*
		局部变量:只在一定区域生效

		全局变量:只在当前go文件中生效
			- 全局变量必须使用 var 或者 const 定义
			- 不能使用 := 赋值全局变量

	*/
	var c1 int = 3
	var c2 int = 4
	fmt.Printf("全局就近原则c3数据值1:%d\n", c3)    // 使用全局变量
	fmt.Printf("全局就近原则c3内存地址1:%p\n", &c3) // 使用全局变量
	c3 = c1 + c2
	fmt.Printf("全局就近原则c3数据值2:%d\n", c3)    // 使用全局变量
	fmt.Printf("全局就近原则c3内存地址2:%p\n", &c3) // 使用全局变量
	fmt.Printf("c1:%d , c2: %d , c3:%d\n", c1, c2, c3)
	c2 = 1
	c3 := c1 + c2 // := 重新定义变量。 使用c3 新变量,就近原则
	fmt.Printf("c3内存地址:%p\n", &c3)
	fmt.Printf("c1:%d , c2: %d , c3:%d\n", c1, c2, c3)
	c1 = 1
	c3 = c1 + c2 // 使用c3 新变量,就近原则
	fmt.Printf("c3内存地址:%p\n", &c3)
	fmt.Printf("c1:%d , c2: %d , c3:%d\n", c1, c2, c3)

}

func test() (int, int) {

	return 1, 2
}

变量

package main

import "fmt"

const ConstVariable = "Hello, World!"

func main() {
	/*
		常量: 理论上不能改变,实际上修改内存数据是可以改变该数据值
			- 格式:关键字 const 定义变量,通常使用大写定义常量,
		 	- 一旦定义常量,是不允许发生数据变更的
			- 不允许使用 := 定义常量。 :=只作用于变量
			- 在编译期间就已经确定了其值,因此它们不会分配内存,也就不存在内存地址的概念
	*/

	//1. 常规格式 : const 常量名 常量类型 = 数据值
	const URL string = "www.baidu.com"
	//2. 隐式定义: 常量自动推到数据类型,基于基本数据类型
	const URL2 = "www.bytedance.com"

	//3. 场景: PI:3.14
	const PI = 3.14
	fmt.Printf("常量地址:%p\n", PI) // 不存在
	constAddress := ConstVariable
	fmt.Println("constAddress:", constAddress)
	fmt.Printf("Address of const: %X\n", &constAddress)
	constAddress = "123"
	fmt.Println("constAddress:", constAddress)
	fmt.Printf("Address of const: %X\n", &constAddress)

	//4. 特殊常量iota 常量计数器, const 定义多个常量,使用 iota 实现自动计数。
	const (
		a = iota
		b = iota
		c
		d = 0
		e = iota
		// 如果 定义的 常量没有赋值,则 沿用上面一个常量的定义的赋值。即:iota自动自增
		f // iota(4)+1=5
	)
	fmt.Println(a, b, c, d, e, f)
	const (
		i = iota
		j = 0
		k = iota
	)
	fmt.Println(i, j, k)
}

标签:Println,常量,day01,var,Printf,c3,fmt,变量
From: https://www.cnblogs.com/dengz/p/18279057

相关文章

  • 通过更改java环境变量修改java版本不生效问题
    目录问题复现解决方法问题复现本地生产环境时java8,但是新项目需要java11.于是我下载了jdk11,并修改了环境变量。之后使用java-version,发现java版本还是8,并没没有更改成11解决方法参考文章输入wherejava将这个路径下的java.exe删除就好了。......
  • FreeBSD系统设置启动环境变量文件涉及.cshrc、.login_conf等
    问题提出:图形界面英文怎么配成中文?FreeBSD启动后发现有时候进入xfce是中文系统,有时候是英文系统。其实是有两套图形登录系统,因此尝试在那套英文系统里设置环境变量,目标是1显示中文2能输入中文。在解决问题中,尝试设置环境变量。问题解决:设置启动环境变量首先看两套图形登......
  • 记一次vue脚手架打包生成的js里面变量逻辑错误的解决
    问题背景开发环境调用threejs,实现3d功能组件,开发环境测试正常,打包部署到现场后异常。浏览器控制台,报变量i和r,没有定义下图是点击报错地方打开的控制台截图。可以看到有ir变量。解决思路开发调试没有问题,那肯定是打包之后命名的变量存在不正确的逻辑了。肯定不能修改dis......
  • 1、变量和简单数据类型
    1.1变量的命名和适用①必须是字母,数字,下划线。不能数字开头message="xxxx"1_message="xxxx"(不行)_message="xxx"0="xxx"(不行)②常变量名之间不能有空格greetingmessage="xxx"(不行)greeting_message="xxx"③不能用......
  • 深入理解Java核心技术模块化局部变量类型推断
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)深入理解Java......
  • 2000-2022年上市公司数字化转型与绿色创新质量匹配数据(含控制变量)
    2000-2022年上市公司数字化转型与绿色创新质量匹配数据(含控制变量)https://download.csdn.net/download/a519573917/89501000目录 上市公司数字化转型与绿色创新质量匹配的实证研究一、引言二、文献综述三、实证模型四、数据来源与描述性统计五、实证结果与分析六......
  • 独家原创 | Matlab实现CNN-Transformer多变量回归预测
    独家原创|Matlab实现CNN-Transformer多变量回归预测目录独家原创|Matlab实现CNN-Transformer多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现CNN-Transformer多变量回归预测;2.运行环境为Matlab2023b及以上;3.data为数......
  • 二、常量指针与指针常量
    一、常量指针:又叫常指针,可以理解为常量的指针,即也是指针,指向的是个常量(指向的对象是常量)。指针变量可以修改,但是不能通过指针来修改其指向的对象。代码形式:intconst*p;constint*p;举例:1#include<stdio.h>23intmain()4{5inta=10;6const......
  • 【深度学习】图形模型基础(1):使用潜在变量模型进行数据分析的box循环
    1.绪论探索数据背后的隐藏规律,这不仅是数据分析的艺术,更是概率模型展现其威力的舞台。在这一过程中,潜在变量模型尤为关键,它成为了数据驱动问题解决的核心引擎。潜在变量模型的基本理念在于,那些看似复杂、杂乱无章的数据表象之下,往往隐藏着一种更为简洁、有序的结构和规律,只......
  • 【Linux】Linux下的环境变量(什么是环境变量,环境变量有什么作用?)
    目录一、前言二、什么是环境变量? 三、如何添加环境变量?四、如何获取环境变量?......