package main
import (
"fmt"
)
/*
* Go语言学习:常量&变量的声明和运用
*
*/
// 这种写法一般用于全局变量,全局变量可以被仅创建而不使用
var (
num int
str string
status bool
)
// 常量的定义
const NUMBER int = 1
const NUMBER2, NUMBER3, NUMBER4 = 1, false, "str"
// 常量还可以用作枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
// iota,特殊常量,可以认为是一个可以被编译器修改的常量。
// 在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
// iota 可以被用作枚举值:
const (
a1 = 1 // 1
b2 = iota // 1 + 0
c3 // 1 + 1
c4 // 1 + 2
c5 = 10 // 10
a6 // 10
a7 = iota // 10 + 0
a8 = 11 // 11
a9 = iota //
)
func main() {
fmt.Println(a1, b2, c3, c4, c5, a6, a7, a8, a9)
//变量的声明方式有以下几种
var name string //声明变量
name = "name" //给变量赋值
var name2 = "name2" //声明后直接赋值
var name3 string = "name3" //声明后直接赋值
// 简单的声明赋值方式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值。
// 使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明。
name4 := "name4"
var a, b, c int
var d, e, f = 1, 2, 3
//同一变量不能被声明多次,但可以被多次赋值
i := 1
//i := 2 //这个是不允许的
i = 2 //可以被赋值多次
/*
* 变量的命名规则:
*
* 由字母、数字、下滑线组成
*
* 注意:首字母不能是数字,变量名不可以是 保留字/关键字
*
* 声明的变量必须被使用,而且如果没声明数据类型则会自动根据值来进行匹配
*/
//常量声明完不可被修改
const (
num1 = 1
)
const num2 = 2
fmt.Println(name)
fmt.Println(name2)
fmt.Println(name3)
fmt.Println(name4)
fmt.Println(i)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
fmt.Println(f)
fmt.Println(num)
fmt.Println(str)
fmt.Println(status)
fmt.Println(num1)
fmt.Println(num2)
name2 = name
/**
值类型:
注意:所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:
当使用等号 = 将一个变量的值赋值给另一个变量时,如:j = i,实际上是在内存中将 i 的值进行了拷贝:
你可以通过 &i 来获取变量 i 的内存地址,如下两个内存不是同一个地址。所以单独修改任意一个两个都不会有影响
*/
fmt.Println(&name)
fmt.Println(&name2)
/*
引用类型:
一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。
这个内存地址为称之为指针,这个指针实际上也被存在另外的某一个字中。
同一个引用类型的指针指向的多个字可以是在连续的内存地址中(内存布局是连续的),这也是计算效率最高的一种存储形式;也可以将这些字分散存放在内存中,每个字都指示了下一个字所在的内存地址。
当使用赋值语句 r2 = r1 时,只有引用(地址)被复制。
如果 r1 的值被改变了,那么这个值的所有引用都会指向被修改后的内容,在这个例子中,r2 也会受到影响。
*/
// 这样写可以直接交换两个变量的值
name3, name4 = name4, name3
fmt.Println(name3, name4)
/*
并行赋值也被用于当一个函数返回多个返回值时,比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)。
*/
}
Go语言开发2---常量&变量的声明和运用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...