在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ Go語(yǔ)言變量
Go panic錯(cuò)誤處理實(shí)例
Go命令行參數(shù)實(shí)例
Go可變參數(shù)的函數(shù)實(shí)例
Go通道同步實(shí)例
Go非阻塞通道操作實(shí)例
Go指針實(shí)例
Go數(shù)字解析實(shí)例
Go語(yǔ)言指針
Go超時(shí)(timeouts)實(shí)例
Go速率限制實(shí)例
Go信號(hào)實(shí)例
Go Base64編碼實(shí)例
Go計(jì)時(shí)器實(shí)例
Go命令行標(biāo)志實(shí)例
Go原子計(jì)數(shù)器實(shí)例
Go語(yǔ)言切片
Go隨機(jī)數(shù)實(shí)例
Go語(yǔ)言類型轉(zhuǎn)換
Go排序?qū)嵗?/span>
Go時(shí)間格式化/解析實(shí)例
Go URL解析實(shí)例
Go字符串函數(shù)實(shí)例
Go語(yǔ)言常量
Go for循環(huán)語(yǔ)句實(shí)例
Go函數(shù)多個(gè)返回值實(shí)例
Go切片實(shí)例
Go行過(guò)濾器實(shí)例
Go語(yǔ)言接口
Go語(yǔ)言數(shù)組
Go語(yǔ)言變量
Go字符串格式化實(shí)例
Go斷續(xù)器實(shí)例
Go if/else語(yǔ)句實(shí)例
Go通道緩沖實(shí)例
Go錯(cuò)誤實(shí)例
Go語(yǔ)言映射
Go執(zhí)行過(guò)程實(shí)例
Go函數(shù)實(shí)例
Go有狀態(tài)的goroutines實(shí)例
Go按自定義函數(shù)排序?qū)嵗?/span>
Go語(yǔ)言作用域規(guī)則
Go時(shí)代(Epoch)實(shí)例
Go變量實(shí)例
Go互斥體實(shí)例
Go語(yǔ)言范圍(range)
Go程序?qū)嵗?/span>
Go語(yǔ)言入門
Go通道路線實(shí)例
Go閉包(匿名函數(shù))實(shí)例
Go Select實(shí)例
Go通道范圍實(shí)例
Go集合函數(shù)實(shí)例
Hello World程序?qū)嵗?/span>
Go環(huán)境變量實(shí)例
Go語(yǔ)言運(yùn)算符
Go讀取文件實(shí)例
Go延遲(defer)實(shí)例
Go SHA1哈希實(shí)例
Go語(yǔ)言條件和決策
Go語(yǔ)言錯(cuò)誤處理
Go通道實(shí)例
Go指針實(shí)例
Go時(shí)間日期實(shí)例
Go語(yǔ)言字符串
Go語(yǔ)言循環(huán)
Go語(yǔ)言基礎(chǔ)語(yǔ)法
Go語(yǔ)言開發(fā)環(huán)境安裝配置
Go常量實(shí)例
Go語(yǔ)言結(jié)構(gòu)體
Go寫文件實(shí)例
Go正則表達(dá)式實(shí)例
Go JSON實(shí)例
Go語(yǔ)言教程
Go關(guān)閉通道實(shí)例
Go接口實(shí)例
Go語(yǔ)言遞歸
Go switch語(yǔ)句實(shí)例
Go函數(shù)遞歸實(shí)例
Go退出程序?qū)嵗?/span>
Go語(yǔ)言程序結(jié)構(gòu)
Go范圍實(shí)例
Go語(yǔ)言函數(shù)
Go工作池實(shí)例
Go語(yǔ)言數(shù)據(jù)類型

Go語(yǔ)言變量

變量只是給程序可以操作的存儲(chǔ)區(qū)域的名字。Go中的每個(gè)變量都有一個(gè)特定的類型,它決定了變量的內(nèi)存大小和布局; 可以存儲(chǔ)在存儲(chǔ)器內(nèi)的值的范圍; 以及可以應(yīng)用于該變量的一組操作。

變量的名稱可以由字母,數(shù)字和下劃線字符組成。它必須以字母或下劃線開頭。大寫和小寫字母是不同的名稱,因?yàn)镚o是區(qū)分大小寫的?;谇耙徽轮薪忉尩幕绢愋?,有以下基本變量類型:

類型 描述
byte 通常為單個(gè)八位字節(jié)(一個(gè)字節(jié)),這是一個(gè)字節(jié)類型。
int 機(jī)器最自然的整數(shù)大小。
float32 單精度浮點(diǎn)值。

Go編程語(yǔ)言還允許定義各種其他類型的變量,我們將在后續(xù)章節(jié)中介紹如枚舉,指針,數(shù)組,結(jié)構(gòu),聯(lián)合等。在本章中,只學(xué)習(xí)研究基本變量類型。

Go變量定義

變量定義意味著告訴編譯器為變量創(chuàng)建存儲(chǔ)的位置和大小。變量定義需要指定數(shù)據(jù)類型,并包含該類型的一個(gè)或多個(gè)變量的列表,如下所示:

var variable_list optional_data_type;

這里,optional_data_type是有效的Go數(shù)據(jù)類型,包括:byte,int,float32,complex64boolean等或任何用戶定義的對(duì)象等,并且variable_list可以包括一個(gè)或多個(gè)用逗號(hào)分隔的標(biāo)識(shí)符變量名稱。一些有效的聲明如下所示:

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

var i,j,k;這一行,聲明和定義變量ijk; 它指示編譯器創(chuàng)建名稱為i,jk的類型為int的變量。

變量可以在它們的聲明時(shí)初始化(賦值一個(gè)初始值)。變量的類型由編譯器基于傳遞給它的值自動(dòng)判斷。初始化器由一個(gè)等號(hào)和一個(gè)常量表達(dá)式組成,如下所示:

variable_name = value;

一些例子是:

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

對(duì)于沒(méi)有初始化器的定義:具有靜態(tài)存儲(chǔ)的變量使用nil隱式初始化(所有字節(jié)都為0); 所有其他變量的初始值為其數(shù)據(jù)類型的零值。

靜態(tài)類型聲明

靜態(tài)類型變量聲明為編譯器提供了保證,即一個(gè)給定類型和名稱的變量,以便編譯器繼續(xù)進(jìn)行進(jìn)一步編譯,而不需要有關(guān)變量的完整詳細(xì)信息。變量聲明僅在編譯時(shí)有其意義,編譯器需要在鏈接程序時(shí)按實(shí)際的變量聲明執(zhí)行。

示例

嘗試下面的示例,其中變量已聲明為一個(gè)類型,并已在main函數(shù)中定義和初始化:

package main

import "fmt"

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

當(dāng)上述代碼編譯和執(zhí)行后,它產(chǎn)生以下結(jié)果:

20
x is of type float64

動(dòng)態(tài)類型聲明/類型推斷

動(dòng)態(tài)類型變量聲明要求編譯器根據(jù)傳遞給它的值來(lái)解釋變量的類型。但編譯器并不需要指定一個(gè)變量為靜態(tài)類型。

示例

看看下面的示例,這里的變量聲明沒(méi)有任何類型,并已在main函數(shù)中定義和初始化。注意,在類型推斷的情況下,已經(jīng)將變量y初始化為 := 運(yùn)算符,其中x使用=運(yùn)算符初始化。

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)    
}

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

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

混合變量聲明

不同類型的變量可以在一次聲明中使用類型推斷。

示例

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)
}

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

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

Go中的左值和右值:

Go中有兩種表達(dá)式:

  1. 左值(lvalue):引用存儲(chǔ)器位置的表達(dá)式稱為“lvalue”表達(dá)式。左值可能出現(xiàn)在作業(yè)的左側(cè)或右側(cè)。

  2. 右值(rvalue):術(shù)語(yǔ)右值(rvalue)是指存儲(chǔ)在內(nèi)存中某個(gè)地址的數(shù)據(jù)值。右值是不能賦值給它的值的表達(dá)式,右值只可能出現(xiàn)在賦值的右側(cè)而不是左側(cè)。

變量是左值,因此可能出現(xiàn)在賦值的左側(cè)。數(shù)字文字是右值,因此不可能分配,也不能出現(xiàn)在左側(cè)。以下是有效的語(yǔ)句:

x = 20.0

但以下不是有效的語(yǔ)句,并會(huì)生成編譯時(shí)錯(cuò)誤:

10 = 20