最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Golang編程中的常量與變量

 更新時(shí)間:2015年10月29日 15:35:28   投稿:goldensun  
這篇文章主要介紹了詳解Golang編程中的常量與變量,是Go語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

Go語(yǔ)言常量
常量是指該程序可能無(wú)法在其執(zhí)行期間改變的固定值。這些固定值也被稱(chēng)為文字。

常量可以是任何像一個(gè)整型常量,一個(gè)浮點(diǎn)常量,字符常量或字符串文字的基本數(shù)據(jù)類(lèi)型。還有枚舉常量。

常量是一樣,只是它們的值不能自己定義后進(jìn)行修改常規(guī)變量處理。

整型常量
一個(gè)整數(shù)文字可以是十進(jìn)制,八進(jìn)制,或十六進(jìn)制常數(shù)。前綴指定基或基數(shù):0x或0X的十六進(jìn)制,0表示八進(jìn)制,并沒(méi)有為十進(jìn)制。

一個(gè)整數(shù)文字也可以有一個(gè)后綴為U和L的組合,分別為無(wú)符號(hào)和長(zhǎng)整型。后綴可以是大寫(xiě)或小寫(xiě),并且可以以任意順序。

這里是整數(shù)常量的一些例子:

復(fù)制代碼 代碼如下:

212         /* Legal */
215u        /* Legal */
0xFeeL      /* Legal */
078         /* Illegal: 8 is not an octal digit */
032UU       /* Illegal: cannot repeat a suffix */

以下是不同類(lèi)型的整型常量的例子:
復(fù)制代碼 代碼如下:

85         /* decimal */
0213       /* octal */
0x4b       /* hexadecimal */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

浮點(diǎn)文本(常量)
浮點(diǎn)字面具有一個(gè)整數(shù)部分,一個(gè)小數(shù)點(diǎn),一個(gè)小數(shù)部分,和一個(gè)指數(shù)部分。你可以表示十進(jìn)制形式或指數(shù)形式浮點(diǎn)文字。

同時(shí)采用十進(jìn)制形式表示,則必須包括小數(shù)點(diǎn),指數(shù),或兩者并用而指數(shù)形式表示,則必須包括整數(shù)部分,小數(shù)部分,或者兩者兼而有之。有符號(hào)的指數(shù),通過(guò)e或E表示

下面是浮點(diǎn)面值的一些例子:

復(fù)制代碼 代碼如下:

3.14159       /* Legal */
314159E-5L    /* Legal */
510E          /* Illegal: incomplete exponent */
210f          /* Illegal: no decimal or exponent */
.e55          /* Illegal: missing integer or fraction */

轉(zhuǎn)義序列
有一些字符在Go中,前面有一個(gè)反斜杠他們將有特殊的含義,它們被用來(lái)表示類(lèi)似的換行符(\n)或制表符(\t)。在這里,有一些這樣的轉(zhuǎn)義序列代碼的列表:

20151029153452951.png (613×461)

以下為例子來(lái)說(shuō)明一些轉(zhuǎn)義字符序列:

復(fù)制代碼 代碼如下:

package main

import "fmt"

func main() {
   fmt.Printf("Hello\tWorld!")
}


當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
復(fù)制代碼 代碼如下:

Hello   World!

字符串文字
字符串文字或常量用雙引號(hào)“”。一個(gè)字符串包含類(lèi)似于字符文字字符:普通字符,轉(zhuǎn)義序列和通用字符。

您可以使用字符串和分隔使用空格打破一個(gè)長(zhǎng)行成多行。

下面是字符串的一些例子。所有的三種形式是相同的字符串。

復(fù)制代碼 代碼如下:

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"


const 關(guān)鍵字
您可以使用 const 前綴來(lái)聲明常量使用特定的類(lèi)型如下:
復(fù)制代碼 代碼如下:

const variable type = value;

下面的例子說(shuō)明了它的細(xì)節(jié):
復(fù)制代碼 代碼如下:

package main

import "fmt"

func main() {
   const LENGTH int = 10
   const WIDTH int = 5  
   var area int

   area = LENGTH * WIDTH
   fmt.Printf("value of area : %d", area)  
}


當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
復(fù)制代碼 代碼如下:

value of area : 50

請(qǐng)注意,這是一個(gè)良好的編程習(xí)慣大寫(xiě)定義常量。

Go語(yǔ)言變量
變量是什么,只不是給定到存儲(chǔ)區(qū)域,我們的程序可以操縱的名稱(chēng)。在Go中每個(gè)變量具有特定的類(lèi)型,它確定的大小和可變的存儲(chǔ)器的布局;能確定存儲(chǔ)器內(nèi)存儲(chǔ)的值的范圍;和組操作可以施加到變量。

一個(gè)變量名可以由字母,數(shù)字和下劃線(xiàn)。它必須以字母或下劃線(xiàn)。大寫(xiě)和小寫(xiě)字母是不同的,因?yàn)镚o是區(qū)分大小寫(xiě)的?;谠摶绢?lèi)型在前面的章節(jié)中說(shuō)明的那樣,將有以下基本變量類(lèi)型:

20151029153518846.png (626×141)

Go編程語(yǔ)言也可以定義各種其他類(lèi)型的變量,我們將在以后的章節(jié)列出,如:枚舉,指針,數(shù)組,結(jié)構(gòu),聯(lián)合,等等。對(duì)于本章覆蓋,讓我們只學(xué)習(xí)研究的基本變量類(lèi)型。

在Go中變量定義:
一個(gè)變量的定義是指,告訴編譯器在哪里,有多少創(chuàng)建存儲(chǔ)變量。變量定義指定一個(gè)數(shù)據(jù)類(lèi)型,并且包含的該類(lèi)型,如下的一個(gè)或多個(gè)變量的列表:

復(fù)制代碼 代碼如下:

var variable_list optional_data_type;

在這里,optional_data_type可以包括字節(jié),整型,float32,complex64,布爾或任何用戶(hù)定義的對(duì)象等有效Go的數(shù)據(jù)類(lèi)型,variable_list可以由用逗號(hào)分隔的一個(gè)或多個(gè)標(biāo)識(shí)符名稱(chēng)。一些有效的聲明如下所示:
復(fù)制代碼 代碼如下:

var    i, j, k int;
var   c, ch byte;
var  f, salary float32;
d = 42;

這一行var i, j, k; 既聲明并定義了變量i,j和k;這指示編譯器創(chuàng)建一個(gè)名為i,j和k的 int類(lèi)型變量。

變量可以初始化(分配初始值)在他們的聲明。變量的類(lèi)型是由編譯器自動(dòng)根據(jù)傳遞給它的值判斷。初始化包括一個(gè)等號(hào)后跟一個(gè)常量表達(dá)式如下:

復(fù)制代碼 代碼如下:

variable_name = value;

一些實(shí)例是:
復(fù)制代碼 代碼如下:

d = 3, f = 5;    // declaration of d and f. Here d and f are int

對(duì)于沒(méi)有初始化定義:具有靜態(tài)存儲(chǔ)時(shí)間變量的隱含零初始化(所有字節(jié)的值為0);所有其它變量的初始值是它們的數(shù)據(jù)類(lèi)型的零值。

靜態(tài)類(lèi)型聲明
靜態(tài)類(lèi)型的變量聲明保障到編譯器,有一個(gè)變量存在具有給定類(lèi)型和名稱(chēng),這樣編譯器進(jìn)行進(jìn)一步的編輯,而不需要對(duì)變量的完整細(xì)節(jié)。變量聲明有其意義在編譯時(shí)止,編譯器需要實(shí)際的變量聲明在鏈接程序時(shí)。

示例
試試下面的例子,其中變量已經(jīng)被聲明為有型,并且已被定義及主要函數(shù)內(nèi)部初始化:

復(fù)制代碼 代碼如下:

package main

import "fmt"

func main() {
   var x float64
   x = 20.0
   fmt.Println(x)
   fmt.Printf("x is of type %T\n", x)
}


讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
復(fù)制代碼 代碼如下:

20
x is of type float64

動(dòng)態(tài)類(lèi)型聲明/類(lèi)型推斷
動(dòng)態(tài)類(lèi)型變量聲明要求編譯器解釋的基礎(chǔ)上傳遞給它值變量的類(lèi)型。編譯器不需要一個(gè)變量靜態(tài)有類(lèi)型的必然要求。

示例
試試下面的例子,其中的變量已經(jīng)聲明沒(méi)有任何類(lèi)型的,并已確定在主函數(shù)中初始化。如果類(lèi)型推斷的,我們已經(jīng)初始化的變量y使用:=運(yùn)算符,x初始化使用=運(yùn)算符。

復(fù)制代碼 代碼如下:

package main

import "fmt"

func main() {
   var x float64 = 20.0

   y := 42
   fmt.Println(x)
   fmt.Println(y)
   fmt.Printf("x is of type %T\n", x)
   fmt.Printf("y is of type %T\n", y) 
}


讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
復(fù)制代碼 代碼如下:

20
42
x is of type float64
y is of type int

混合變量聲明
不同類(lèi)型的變量可以一步到位使用類(lèi)型推斷聲明。

例子

復(fù)制代碼 代碼如下:

package main

import "fmt"

func main() {
   var a, b, c = 3, 4, "foo" 
 
   fmt.Println(a)
   fmt.Println(b)
   fmt.Println(c)
   fmt.Printf("a is of type %T\n", a)
   fmt.Printf("b is of type %T\n", b)
   fmt.Printf("c is of type %T\n", c)
}


讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
復(fù)制代碼 代碼如下:

3
4
foo
a is of type int
b is of type int
c is of type string

在Go中的左值和右值:
在Go中有兩種表達(dá)式:

lvalue : 引用一個(gè)存儲(chǔ)器位置的表達(dá)式被稱(chēng)為“左值”表達(dá)。左值可能顯示為任一左手或賦值的右側(cè)。

rvalue : 術(shù)語(yǔ)右值是指被存儲(chǔ)在存儲(chǔ)器中的某些地址的數(shù)據(jù)值。右值是不能分配給它的值,這意味著右值可能出現(xiàn)在賦值的右側(cè)而不是左側(cè)的表達(dá)式。

變量是左值等都可能出現(xiàn)在賦值的左側(cè)。數(shù)字文字是右值,因此可能不會(huì)被分配,不能出現(xiàn)在左側(cè)。下面是一個(gè)有效語(yǔ)句:

復(fù)制代碼 代碼如下:

 x = 20.0

但是,下面是不是一個(gè)有效的聲明,并會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤:
復(fù)制代碼 代碼如下:

10 = 20

相關(guān)文章

  • 使用Go語(yǔ)言實(shí)現(xiàn)benchmark解析器

    使用Go語(yǔ)言實(shí)現(xiàn)benchmark解析器

    這篇文章主要為大家詳細(xì)介紹了如何使用Go語(yǔ)言實(shí)現(xiàn)benchmark解析器并實(shí)現(xiàn)及Web UI 數(shù)據(jù)可視化,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2025-04-04
  • Golang 之協(xié)程的用法講解

    Golang 之協(xié)程的用法講解

    這篇文章主要介紹了Golang 之協(xié)程的用法講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • golang雙鏈表的實(shí)現(xiàn)代碼示例

    golang雙鏈表的實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了golang雙鏈表的實(shí)現(xiàn)代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Golang請(qǐng)求fasthttp實(shí)踐

    Golang請(qǐng)求fasthttp實(shí)踐

    本文主要介紹了Golang請(qǐng)求fasthttp實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Go?跨域中間件解決CORS問(wèn)題

    Go?跨域中間件解決CORS問(wèn)題

    跨域問(wèn)題CORS是前端開(kāi)發(fā)人員經(jīng)常遇到的問(wèn)題,本文主要介紹了Go?跨域中間件解決CORS問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • 詳解Go語(yǔ)言中io/ioutil工具的使用

    詳解Go語(yǔ)言中io/ioutil工具的使用

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中io/ioutil工具的使用,從而簡(jiǎn)化文件操作。文中是示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-05-05
  • go語(yǔ)言字符串的拼接和切片方法總結(jié)

    go語(yǔ)言字符串的拼接和切片方法總結(jié)

    在go語(yǔ)言中,因?yàn)樽址荒鼙辉L(fǎng)問(wèn),不能被修改,所以進(jìn)行字符串拼接的時(shí)候,golang都需要進(jìn)行內(nèi)存拷貝,造成一定的性能消耗,這篇文章主要給大家介紹了關(guān)于go語(yǔ)言字符串的拼接和切片的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • golang判斷key是否在map中的代碼

    golang判斷key是否在map中的代碼

    這篇文章主要介紹了golang判斷key是否在map中的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go中的代碼換行問(wèn)題

    Go中的代碼換行問(wèn)題

    這篇文章主要介紹了Go中的代碼換行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Go實(shí)現(xiàn)并發(fā)的示例代碼

    Go實(shí)現(xiàn)并發(fā)的示例代碼

    Go語(yǔ)言的并發(fā)機(jī)制是其強(qiáng)大和流行的一個(gè)關(guān)鍵特性之一,本文主要介紹了Go實(shí)現(xiàn)并發(fā)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11

最新評(píng)論

东平县| 咸宁市| 明光市| 阿拉尔市| 玛曲县| 博兴县| 东台市| 关岭| 谷城县| 清远市| 长岛县| 聂荣县| 金塔县| 新巴尔虎右旗| 晋城| 昭觉县| 常宁市| 江油市| 门头沟区| 钦州市| 武胜县| 高平市| 高要市| 平利县| 莎车县| 青铜峡市| 高雄市| 高阳县| 赤峰市| 策勒县| 山东省| 喜德县| 昭通市| 茶陵县| 贺州市| 湾仔区| 龙泉市| 金溪县| 明光市| 武功县| 深泽县|