国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Golang】案例為基淺談Go的變量與常量

這篇具有很好參考價(jià)值的文章主要介紹了【Golang】案例為基淺談Go的變量與常量。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??推薦網(wǎng)站(不斷完善中):個人博客

??個人主頁:個人主頁

??相關(guān)專欄:CSDN專欄、個人專欄

??立志賺錢,干活想躺,瞎分享的摸魚工程師一枚

??前言

在上一篇文章中,博主對于Go語言中的一些基本語法與變量的初步定義做了初步介紹。

在這篇文章主要是對于變量的進(jìn)一步應(yīng)用,以及對于Go語言中常量的介紹。

那么我們就看以下內(nèi)容!

【Golang】案例為基淺談Go的變量與常量,一Go到底,golang,java,算法,后端

1.變量交換

簡單闡述一下什么是變量交換,顧名思義,就是將變量的值進(jìn)行交換的一個動作

例如我們定義了兩個變量a:=10b:=20,那么這時候我們想要將兩個變量的值進(jìn)行交換的話,在Go語言中為我們提供了比較方便的方式。

案例

package main

import "fmt"

func main() {
	
	// 定義變量a、b,并且分別賦值10、20
	a, b := 10, 20
	// 第一輪輸出查看結(jié)果
	fmt.Println("原本a、b的結(jié)果為:", a, b)
	// 然后我們可以直接用 = 號來對a、b進(jìn)行快速賦值,交換他們的位置
	a, b = b, a
  // 第二輪輸出查看結(jié)果
	fmt.Println("新輸出的a、b結(jié)果為:", a, b)

}

通過以上代碼我們可以看到,在=的右側(cè)寓意為賦值,因?yàn)樵贕o中支持多賦值和多聲明的代碼形式,所以我們只需要將要賦值的變量進(jìn)行位置對換,那么新的值就被賦予了。


2.匿名變量

闡述完變量交換,那么我們就不得不提變量中的一個特殊存在,那就是匿名變量

將值賦予給匿名變量實(shí)際上也就等于將這個值給拋棄了。通常也稱之為拋棄值

關(guān)鍵標(biāo)識

利用 _ 下劃線,來標(biāo)識匿名變量,也是我們所說的空白標(biāo)識符

案例

package main

import "fmt"

func main() {

	// 定義變量
	_, a := 10, 7
	// 使用匿名變量的時候10就是拋棄值
	fmt.Println("輸出結(jié)果:", a)
}

2.1.如何理解這個匿名變量的使用場景?

可能很多人會有疑問這個匿名變量有什么意義,其實(shí)在實(shí)際的使用場景中,匿名變量的使用意義個人感覺更趨近于占位符。

假設(shè)我們用到了某個函數(shù)名字叫Dial()的函數(shù),這個函數(shù)會返回兩個值給我們,那么我們只需要其中的一個值即可,另一個值我們用不到,但是因?yàn)槭欠祷刂担a規(guī)則里面我們要接收,所以這時候我們就可以用匿名變量來占住另一個值的位置,代碼如下。

案例

package main

import (
	"fmt"
	"net"
)
func main() {

    //conn, err := net.Dial("tcp", "127.0.0.1:8080")
    //如果不想接收err的值,那么可以使用_表示,這就是匿名變量
    conn, _ := net.Dial("tcp", "127.0.0.1:8080")
		fmt.Println(conn)
}

這里的net.Dial()函數(shù)就有兩個返回值,分別為conn,err,那么我們只需要conn這個返回值的時候,我們就可以利用到匿名變量來占位獲取到另一個返回值,但是我們可以不需要用到這個返回值。


3.關(guān)于作用域

一個變量(常量、類型或函數(shù))在程序中都有一定的作用范圍,稱之為作用域

首先Go語言的特殊性導(dǎo)致在編譯的過程中如果出現(xiàn)你定義的變量、常量、函數(shù)等沒有被使用的話,編譯是無法通過的,所以了解作用范圍是很有必要的。

了解作用域可以更好的定義你需要使用的內(nèi)容,也可以解決一些編譯過程中的錯誤。

根據(jù)定義的位置總結(jié)三種

  • 函數(shù)內(nèi)定義的變量稱為局部變量
  • 函數(shù)外定義的變量稱為全局變量
  • 函數(shù)定義中的變量稱為形式參數(shù)

所謂的函數(shù)可以暫時先理解成一塊代碼片段,比如我們案例中常用的main()就是函數(shù)

將內(nèi)容定義在函數(shù)的{ }內(nèi),就可以稱之為定義在函數(shù)體內(nèi)。

3.1.局部變量

在函數(shù)體內(nèi)聲明的變量稱之為局部變量,它們的作用域只在函數(shù)體內(nèi),函數(shù)的參數(shù)和返回值變量都屬于局部變量。

(擴(kuò)展)局部變量不是一直存在的,它只在定義它的函數(shù)被調(diào)用后存在,函數(shù)調(diào)用結(jié)束后這個局部變量就會被銷毀。

案例

package main

import "fmt"

func main() {

	// 定義變量,以下這些定義在main()函數(shù)中的都可以稱之為局部變量
	a := 10
	b := 20
	c := a + b
  // 輸出局部變量
	fmt.Println("輸出局部變量為:", a, b, c)

}

3.2.全局變量

在函數(shù)體外聲明的變量稱之為全局變量,全局變量只需要在一個源文件中定義,就可以在所有源文件中使用,當(dāng)然,不包含這個全局變量的源文件需要使用“import”關(guān)鍵字引入全局變量所在的源文件之后才能使用這個全局變量。

全局變量聲明必須以 var 關(guān)鍵字開頭,如果想要在外部包中使用(也就是想要被別的包進(jìn)行import引用),那么全局變量的首字母必須大寫。

案例

package main

import "fmt"

// 定義全局變量,必須有var關(guān)鍵字,并且在函數(shù)體外面
var a = 10
var b = "let's go"

func main() {
	// 在main()函數(shù)中調(diào)用a、b
	fmt.Println("輸出全局變量為:", a, b)
	demo()
}

func demo() {
	// 因?yàn)槭侨质褂?,在要在這個源碼中我們的方法都能調(diào)用到
	// 因此我在sum()函數(shù)中也可以調(diào)用到b變量的值
	fmt.Println("調(diào)用sum()函數(shù)輸出的全局變量為:", b)
}

可以看到如上案例,無論是在main()函數(shù)中還是在我們的demo()函數(shù)中,我們都可以得到a、b的值進(jìn)行輸出

使用細(xì)節(jié):關(guān)于全局與局部同名怎么辦?

大家可能會思考一個問題,如果我有一個全局變量叫a,同時我又在函數(shù)中也定義了一個局部變量a,這兩個變量的名字相同但是值不同,那么我們程序應(yīng)該采用誰?

其實(shí)大部分時候遇到這種情況,程序當(dāng)中遵循的一般都是就近原則,也就是說很多時候我們的程序是誰離得近,就用誰。

也就說出現(xiàn)如上情況我們會優(yōu)先先采用離得近的局部變量

案例

package main

import "fmt"

var a = "這是全局變量"

func main() {

	a := "這是局部變量"
	fmt.Println("在main中會采用的變量是:", a)
	demo()
}

func demo() {
	fmt.Println("如果沒有局部變量影響: ", a)
}

得到的結(jié)果是:

在main中會采用的變量是: 這是局部變量
如果沒有局部變量影響: 這是全局變量

注意:雖然這種情況會出現(xiàn),但是還是不要出現(xiàn)這種讓人容易產(chǎn)生歧義的代碼,規(guī)則雖然沒有不允許但是代碼規(guī)范上顯然這樣是不對的

3.3.形式參數(shù)

在定義函數(shù)時函數(shù)名后面括號中的變量叫做形式參數(shù)(簡稱形參)。形式參數(shù)只在函數(shù)調(diào)用時才會生效,函數(shù)調(diào)用結(jié)束后就會被銷毀,在函數(shù)未被調(diào)用時,函數(shù)的形參并不占用實(shí)際的存儲單元,也沒有實(shí)際值。

形式參數(shù)某種意義上也是一個被聲明的局部變量,所以我們在定義局部變量的時候不要出現(xiàn)局部變量與形式參數(shù)重名的情況為好。

案例

package main

import "fmt"

// 定義了全局變量
var a = "這是全局變量"

func main() {
	// 這里是局部變量
	a := "這是main的局部變量a"
	b := "這是main的局部變量b"
	fmt.Println("輸出變量的值為: ", a, b)
	// 在調(diào)用test()函數(shù)的時候傳遞局部變量a、b的值
	test(a, b)
}

// 在函數(shù)中定義形參a、b,那么當(dāng)test()函數(shù)被調(diào)用的時候
// 形參就可以直接被當(dāng)作局部變量來使用,值則是由調(diào)用者的傳遞內(nèi)容來決定的
func test(a, b string) {
	// 輸出結(jié)果
	fmt.Println("這是由main傳過來的內(nèi)容:", a, b)
}

得到的輸出結(jié)果為:

輸出變量的值為: 這是main的局部變量a 這是main的局部變量b
這是由main傳過來的內(nèi)容: 這是main的局部變量a 這是main的局部變量b

通過上述案例,讓我們對 局部變量 、 全局變量形式參數(shù) 有一個了解,并且分清楚他們之間的區(qū)別和使用


4.關(guān)于常量

在我們開始介紹代碼中的常量的時候,我們要先闡述一下什么叫做常量

實(shí)際上所謂的常量就是一個不會改變的值,用來存儲一些我們自己事先規(guī)定好、不會改變的值

4.1.常量的使用

Go語言中的常量使用關(guān)鍵字const定義,用于存儲不會改變的數(shù)據(jù),常量是在編譯時被創(chuàng)建的,即使定義在函數(shù)內(nèi)部也是如此,并且只能是布爾型、數(shù)字型(整數(shù)型、浮點(diǎn)型和復(fù)數(shù))和字符串型。

由于編譯時的限制,定義常量的表達(dá)式必須為能被編譯器求值的常量表達(dá)式

語法

// 注意了 []表示 數(shù)據(jù)類型 可寫,可不寫
const 常量名 [數(shù)據(jù)類型] =

從之前的變量聲明中我們可以知道,其實(shí)Go語言很多時候想要簡化一些批量性的動作,因此在定義常量的時候也可以采用批量式的定義。

批量定義的語法

const (
	常量名1 =1
  常量名2 =2
  ...
)

所有常量的運(yùn)算都可以在編譯期完成,這樣不僅可以減少運(yùn)行時的工作,也方便其他代碼的編譯優(yōu)化,當(dāng)操作數(shù)是常量時,一些運(yùn)行時的錯誤也可以在編譯時被發(fā)現(xiàn),例如整數(shù)除零、字符串索引越界、任何導(dǎo)致無效浮點(diǎn)數(shù)的操作等。

案例

// 單個定義常量
const pi= 3.14159

// 批量定義常量
const (
    e  = 2.7182818
    pi = 3.1415926
)

4.2.常量使用的細(xì)節(jié)

其實(shí)在使用常量的過程中,我們除了采用批量定義的方式來定義常量,我們還可以用另一種方式在批量定義常量的同時,簡化常量初始化(賦值)的過程。

簡單來說,假設(shè)我要定義a、b、c、d四個常量。a、b的值都定義為10,c、d的值都定義為20,那么我們在初始化的時候就可以進(jìn)行一些簡化操作。

案例解析

package main

import "fmt"

const (
	a = 10
	b
	c = 20
	d
)

func main() {

	fmt.Println("輸出定義的常量:", a, b, c, d)
}

最終得到的輸出結(jié)果為:

輸出定義的常量: 10 10 20 20

4.3.iota常量生成器

常量聲明可以使用 iota 常量生成器初始化,它用于生成一組以相似規(guī)則初始化的常量,但是不用每行都寫一遍初始化表達(dá)式。

簡單來說呢,就是有點(diǎn)類似于計(jì)數(shù)器的存在,在定義第一個常量的時候會被歸置為0,然后依此累加1

需求

我們從需求出發(fā)可能更好理解這個iota

假設(shè)我們要定義常量為周一到周天,那么周一為0,依次類推周天為6。

案例解析

package main

import "fmt"

// 定義周一到周天
const (
	Monday = iota
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
	Sunday //6
)

func main() {

	fmt.Println("輸出日期的值為:", Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
}

輸出的結(jié)果為:

輸出日期的值為: 0 1 2 3 4 5 6

當(dāng)然我們知道iota的初始值默認(rèn)歸0,但是只要你在第一步對iota進(jìn)行運(yùn)算操作,比如Monday = iota+1,那么你可以發(fā)現(xiàn)在改變初始值的情況下,后續(xù)的值也會陸續(xù)發(fā)生改變,可以動手試試哦!


5.關(guān)于源碼

博主將接下來系列中學(xué)習(xí)到的源碼做了統(tǒng)一保存,在 Github 上,分享給有需要的人(禁止未經(jīng)說明直接復(fù)制轉(zhuǎn)載)。

如有需要可以 點(diǎn)擊這里?? 進(jìn)行查看,創(chuàng)作不易,如果您覺得不錯可以給博主點(diǎn)個 star?? ,感激不盡!

希望能夠通過 案例 + 注釋 + 講解 的方式在學(xué)習(xí)過程中的經(jīng)驗(yàn)和理解分享給大家同時能對想要學(xué)習(xí)的人提供一些幫助。

??寫在結(jié)尾

本章節(jié)內(nèi)容主要是講述了一些關(guān)于變量的進(jìn)一步細(xì)節(jié)運(yùn)用,以及關(guān)于常量的知識,這兩部分的內(nèi)容在未來我們實(shí)際開發(fā)代碼當(dāng)中還是比較經(jīng)常用到的,所以還是要好好的去梳理和理解一下。

以上為個人分享,如有錯誤請指出

【Golang】案例為基淺談Go的變量與常量,一Go到底,golang,java,算法,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-799506.html

到了這里,關(guān)于【Golang】案例為基淺談Go的變量與常量的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go類型全解:常量與變量大全!

    Go類型全解:常量與變量大全!

    本篇文章深入探討了 Go 語言中類型確定值、類型不確定值以及對應(yīng)類型轉(zhuǎn)換的知識點(diǎn),后續(xù)充分解析了常量與變量及其高級用法,并舉出豐富的案例。 關(guān)注公眾號【TechLeadCloud】,分享互聯(lián)網(wǎng)架構(gòu)、云服務(wù)技術(shù)的全維度知識。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、

    2024年02月09日
    瀏覽(25)
  • Go語言基礎(chǔ)之變量和常量

    標(biāo)識符 在編程語言中標(biāo)識符就是程序員定義的具有特殊意義的詞,比如變量名、常量名、函數(shù)名等等。 Go語言中標(biāo)識符由字母數(shù)字和_(下劃線)組成,并且只能以字母和_開頭。 舉幾個例子:abc, _, _123, a123 是指編程語言中預(yù)先定義好的具有特殊含義的標(biāo)識符。

    2024年02月12日
    瀏覽(27)
  • 如何在Go中使用變量和常量

    變量 是一個需要掌握的重要編程概念。它們是符號,代表你在程序中使用的值。 本教程將介紹一些變量基礎(chǔ)知識和在您創(chuàng)建的Go程序中使用它們的最佳實(shí)踐。 用技術(shù)術(shù)語來說,變量是將一個存儲位置賦值給一個與符號名稱或標(biāo)識符相關(guān)聯(lián)的值。在計(jì)算機(jī)程序中,我們使用變

    2024年02月07日
    瀏覽(23)
  • 【30天熟悉Go語言】4 Go的變量、常量、運(yùn)算符

    【30天熟悉Go語言】4 Go的變量、常量、運(yùn)算符

    Go系列文章: GO開篇:手握J(rèn)ava走進(jìn)Golang的世界 2 Go開發(fā)環(huán)境搭建、Hello World程序運(yùn)行 3 Go編程規(guī)約和API包 Go專欄傳送鏈接:https://blog.csdn.net/saintmm/category_12326997.html 變量相當(dāng)于內(nèi)存中一個數(shù)據(jù)存儲空間的標(biāo)識。 變量的使用分三步:聲明、賦值、使用。 變量的聲明 采用 var 變量名

    2024年02月07日
    瀏覽(33)
  • 【go語言】2.1.1 變量,常量和數(shù)據(jù)類型

    【go語言】2.1.1 變量,常量和數(shù)據(jù)類型

    Go 語言中,變量是存儲數(shù)據(jù)的基本單位,常量則是固定不變的數(shù)據(jù)。每個變量和常量都有其對應(yīng)的數(shù)據(jù)類型。 在 Go 語言中,你可以使用? var ?來聲明一個變量: 上面的代碼聲明了一個名為? name ?的變量,它的類型是? string 。你也可以在聲明變量的同時給它賦值: 或

    2024年02月15日
    瀏覽(20)
  • 【Go基礎(chǔ)】編譯、變量、常量、基本數(shù)據(jù)類型、字符串

    【Go基礎(chǔ)】編譯、變量、常量、基本數(shù)據(jù)類型、字符串

    面試題文檔下鏈接點(diǎn)擊這里免積分下載 go語言入門到精通點(diǎn)擊這里免積分下載 使用 go build 1.在項(xiàng)目目錄下執(zhí)行 2.在其他路徑下編譯 go build ,需要再后面加上項(xiàng)目的路徑(項(xiàng)目路徑從GOPATH/src后開始寫起,編譯之后的可執(zhí)行文件就保存再當(dāng)前目錄) 3.打包的時候自定義名字:

    2024年02月09日
    瀏覽(28)
  • 初始Go語言2【標(biāo)識符與關(guān)鍵字,操作符與表達(dá)式,變量、常量、字面量,變量作用域,注釋與godoc】

    ??go變量、常量、自定義類型、包、函數(shù)的命名方式必須遵循以下規(guī)則: 首字符可以是任意Unicode字符或下劃線。 首字符之外的部分可以是Unicode字符、下劃線或數(shù)字。 名字的長度無限制。 理論上名字里可以有漢字,甚至可以全是漢字,但實(shí)際中不要這么做。 Go語言

    2023年04月09日
    瀏覽(89)
  • Go 工具鏈詳解(四): Golang環(huán)境變量設(shè)置和查看工具 go env

    go env 是 Go 工具鏈中的一個命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對于理解、編譯和運(yùn)行 Golang 程序非常有用。 go 提供的命令及 go 程序的編譯運(yùn)行都會使用到環(huán)境變量,如果未設(shè)置對應(yīng)的環(huán)境變量,go 則會使用其默認(rèn)設(shè)置。默認(rèn)情況下,env 以 shell 腳本(在Windo

    2024年02月16日
    瀏覽(56)
  • 【Golang入門教程】Go語言變量的初始化

    【Golang入門教程】Go語言變量的初始化

    強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能 推薦一個個人工作,日常中比較常用的人工智能工具,無需魔法,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能工具 引言 在Go語言中,變量

    2024年04月17日
    瀏覽(106)
  • [golang 微服務(wù)] 7. go-micro框架介紹,go-micro腳手架,go-micro結(jié)合consul搭建微服務(wù)案例

    [golang 微服務(wù)] 7. go-micro框架介紹,go-micro腳手架,go-micro結(jié)合consul搭建微服務(wù)案例

    上一節(jié)講解了 GRPC微服務(wù)集群 + Consul集群 + grpc-consul-resolver 相關(guān)的案例,知道了微服務(wù)之間通信采用的 通信協(xié)議 ,如何實(shí)現(xiàn) 服務(wù)的注冊和發(fā)現(xiàn) ,搭建 服務(wù)管理集群 ,以及服務(wù)與服務(wù)之間的 RPC通信方式 ,具體的內(nèi)容包括: protobuf協(xié)議 , consul 及 docker部署consul集群 , GRPC框架 的

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包