package main
import (
"fmt"
)
/*
* Go語(yǔ)言學(xué)習(xí):常量&變量的聲明和運(yùn)用
*
*/
// 這種寫法一般用于全局變量,全局變量可以被僅創(chuàng)建而不使用
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,特殊常量,可以認(rèn)為是一個(gè)可以被編譯器修改的常量。
// 在每一個(gè)const關(guān)鍵字出現(xiàn)時(shí),被重置為0,然后再下一個(gè)const出現(xiàn)之前,每出現(xiàn)一次iota,其所代表的數(shù)字會(huì)自動(dòng)增加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" //聲明后直接賦值
// 簡(jiǎn)單的聲明賦值方式,但是它只能被用在函數(shù)體內(nèi),而不可以用于全局變量的聲明與賦值。
// 使用操作符 := 可以高效地創(chuàng)建一個(gè)新的變量,稱之為初始化聲明。
name4 := "name4"
var a, b, c int
var d, e, f = 1, 2, 3
//同一變量不能被聲明多次,但可以被多次賦值
i := 1
//i := 2 //這個(gè)是不允許的
i = 2 //可以被賦值多次
/*
* 變量的命名規(guī)則:
*
* 由字母、數(shù)字、下滑線組成
*
* 注意:首字母不能是數(shù)字,變量名不可以是 保留字/關(guān)鍵字
*
* 聲明的變量必須被使用,而且如果沒聲明數(shù)據(jù)類型則會(huì)自動(dòng)根據(jù)值來(lái)進(jìn)行匹配
*/
//常量聲明完不可被修改
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 這些基本類型都屬于值類型,使用這些類型的變量直接指向存在內(nèi)存中的值:
當(dāng)使用等號(hào) = 將一個(gè)變量的值賦值給另一個(gè)變量時(shí),如:j = i,實(shí)際上是在內(nèi)存中將 i 的值進(jìn)行了拷貝:
你可以通過 &i 來(lái)獲取變量 i 的內(nèi)存地址,如下兩個(gè)內(nèi)存不是同一個(gè)地址。所以單獨(dú)修改任意一個(gè)兩個(gè)都不會(huì)有影響
*/
fmt.Println(&name)
fmt.Println(&name2)
/*
引用類型:
一個(gè)引用類型的變量 r1 存儲(chǔ)的是 r1 的值所在的內(nèi)存地址(數(shù)字),或內(nèi)存地址中第一個(gè)字所在的位置。
這個(gè)內(nèi)存地址為稱之為指針,這個(gè)指針實(shí)際上也被存在另外的某一個(gè)字中。
同一個(gè)引用類型的指針指向的多個(gè)字可以是在連續(xù)的內(nèi)存地址中(內(nèi)存布局是連續(xù)的),這也是計(jì)算效率最高的一種存儲(chǔ)形式;也可以將這些字分散存放在內(nèi)存中,每個(gè)字都指示了下一個(gè)字所在的內(nèi)存地址。
當(dāng)使用賦值語(yǔ)句 r2 = r1 時(shí),只有引用(地址)被復(fù)制。
如果 r1 的值被改變了,那么這個(gè)值的所有引用都會(huì)指向被修改后的內(nèi)容,在這個(gè)例子中,r2 也會(huì)受到影響。
*/
// 這樣寫可以直接交換兩個(gè)變量的值
name3, name4 = name4, name3
fmt.Println(name3, name4)
/*
并行賦值也被用于當(dāng)一個(gè)函數(shù)返回多個(gè)返回值時(shí),比如這里的 val 和錯(cuò)誤 err 是通過調(diào)用 Func1 函數(shù)同時(shí)得到:val, err = Func1(var1)。
*/
}
Go語(yǔ)言開發(fā)2---常量&變量的聲明和運(yùn)用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 又是一年驚蟄, 年的美味佳肴讓挑剔的味蕾疲倦了, 年的美味佳肴讓貪心的腸胃厭惡了, 還好迎來(lái)了驚蟄的雷鳴雨水,還不...