Go中的分配

原文

Go是靜態(tài)類型的編程語言,變量的類型由存儲的值決定,因為數(shù)據不能像Python一樣動態(tài)的分配。

有一個T類型的變量left,可以通過6種方式突照,把right的值賦值到left邊迂苛。

1.相同的類型

這是很顯然的,當right的類型也是T的時候念祭,這種復制是完全有效的,詳見 "Identical types in Go"

2.相同的底層類型

在Go中任何類型都有一個底層類型碍侦。像布爾粱坤,數(shù)字,字符串或者文字類型的基礎類型是一樣的瓷产。除此之外底層類型只能通過一種方式聲明:

 type X map[string]int 
 var x X  // underlying type is map[string]int 

還有一種可以分配的情況是站玄,當有相同的底層類型時:

type X map[string]int
var x X
var y map[string]int
x = y

當有兩個聲明的類型有相同的底層是,是不能相互賦值的:

type X map[string]int
type Y map[string]int
var x X
var y Y
x = y  // cannot use y (type Y) as type X in assignment

也就是說賦值的時候濒旦,至少有一個類型不是自己聲明的類型株旷。

在Go里面的類型是可命名的也可以是未命名的。未命名的類型可以通過字面指定:

var a [10]string
var b struct{ field string}
var c map[string]int

3.接口賦值給實現(xiàn)了該接口的值

如果變量實現(xiàn)了接口T疤估,那么我們可以把T接口賦值給該變量灾常。

type Callable interface {
   f() int
}
type T int
func (t T) f() int {
    return int(t)
}
var c Callable
var t T
c = t

更多關于接口類型可以看 language spec

4.當通道的類型相同時,可以相互賦值

type T chan<- map[string]int
var c1 T
var c2 chan map[string]int
c1 = c2
c2 = c1  // cannot use c1 (type T) as type chan map[string]int in assignment

第二種情況有相同的底層類型铃拇,但是必須有一個是未命名的類型:

type T chan<- map[string]int
type T2 chan map[string]int
var c1 T
var c2 T2
c1 = c2  // cannot use c2 (type T2) as type T in assignment

5.nil分配

允許將nil分配給指針钞瀑,函數(shù),切片慷荔,映射雕什,通道,接口。

var a *int
var b func(int) int
var c []int
var d map[string]int
var e chan int
var f interface{}
a, b, c, d, e, f = nil, nil, nil, nil, nil, nil
var g [10]int
g = nil  // cannot use nil as type [10]int in assignment

6.沒有命名類型的常量

可以在Go官方博客里面找到關于Go常量的深度介紹
未分配類型的常量可以賦值給類型為T的變量當常量是T的值贷岸。

var a float32
var b float64
var c int32
var d int64
const untyped = 1
a = untyped
b = untyped
c = untyped
d = untyped
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末壹士,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子偿警,更是在濱河造成了極大的恐慌躏救,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螟蒸,死亡現(xiàn)場離奇詭異盒使,居然都是意外死亡,警方通過查閱死者的電腦和手機七嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門少办,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诵原,你說我怎么就攤上這事英妓。” “怎么了绍赛?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵蔓纠,是天一觀的道長。 經常有香客問我惹资,道長贺纲,這世上最難降的妖魔是什么航闺? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任褪测,我火速辦了婚禮,結果婚禮上潦刃,老公的妹妹穿的比我還像新娘侮措。我一直安慰自己,他們只是感情好乖杠,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布分扎。 她就那樣靜靜地躺著,像睡著了一般胧洒。 火紅的嫁衣襯著肌膚如雪畏吓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天卫漫,我揣著相機與錄音菲饼,去河邊找鬼。 笑死列赎,一個胖子當著我的面吹牛宏悦,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼饼煞,長吁一口氣:“原來是場噩夢啊……” “哼源葫!你這毒婦竟也來了?” 一聲冷哼從身側響起砖瞧,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤息堂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后块促,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體储矩,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年褂乍,在試婚紗的時候發(fā)現(xiàn)自己被綠了持隧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡逃片,死狀恐怖屡拨,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情褥实,我是刑警寧澤呀狼,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站损离,受9級特大地震影響哥艇,放射性物質發(fā)生泄漏。R本人自食惡果不足惜僻澎,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一貌踏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窟勃,春花似錦祖乳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汁咏,卻和暖如春亚斋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背攘滩。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工帅刊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轰驳。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓厚掷,卻偏偏與公主長得像弟灼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冒黑,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容

  • 出處---Go編程語言 歡迎來到 Go 編程語言指南田绑。本指南涵蓋了該語言的大部分重要特性 Go 語言的交互式簡介,...
    Tuberose閱讀 18,437評論 1 46
  • 1.安裝 https://studygolang.com/dl 2.使用vscode編輯器安裝go插件 3.go語...
    go含羞草閱讀 1,553評論 0 6
  • 1抡爹、今天培訓體驗式保養(yǎng)掩驱、幾個新人說一定把保養(yǎng)標準化落地。 2...
    京心達張新波閱讀 255評論 0 0
  • 你的生活是由掙錢來決定的单寂,而花錢反映的是你的精神生活。同樣一件花錢的事情笑诅,有意者和無意者因心態(tài)的不同调缨,往往有著迥然...
    公西魚機子閱讀 581評論 0 0
  • 函數(shù)定義 函數(shù)聲明 函數(shù)表達式 函數(shù)實例化 不同函數(shù)定義方式的區(qū)別: 聲明提前:代碼執(zhí)行前先對變量定義、函數(shù)聲明進...
    angelwgh閱讀 287評論 0 0