自學(xué)go中(二)

自學(xué)go中(二)

類型

var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
    fmt.Printf("unexpected type %T", t)       // %T 輸出 t 是什么類型
case bool:
    fmt.Printf("boolean %t\n", t)             // t 是 bool 類型
case int:
    fmt.Printf("integer %d\n", t)             // t 是 int 類型
case *bool:
    fmt.Printf("pointer to boolean %t\n", *t) // t 是 *bool 類型
case *int:
    fmt.Printf("pointer to integer %d\n", *t) // t 是 *int 類型
}

byte湃番,[]byte和string類型

defer(重點(diǎn)理解和使用類型)

推遲執(zhí)行函數(shù)铐姚,多用于資源關(guān)閉(比如可能出現(xiàn)錯(cuò)誤,等異常情況返回的時(shí)候)

數(shù)據(jù)

初始化,分配

new分配方法

  1. 分配的結(jié)果是一個(gè)指向類型為T的內(nèi)存地址空間
  2. 返回類型為*T
  3. 屬性會(huì)被分配為 “零值”
p := new(SyncedBuffer)  // type *SyncedBuffer
var v SyncedBuffer      // type  SyncedBuffer

構(gòu)造函數(shù)

零值分配有時(shí)候可能不太好唯沮,需要一個(gè)構(gòu)造函數(shù)一般構(gòu)造函數(shù)都是使用NewStrcut的方式創(chuàng)建伏尼。
或者可以再配合上復(fù)合字面來初始化

make分配

make只用來創(chuàng)建 切片忿檩,映射,和信道爆阶,返回的類型都為T燥透,如果明確知道需要的是 *T,就要使用new方式或者構(gòu)造函數(shù)以及復(fù)合字面產(chǎn)生指針類型的結(jié)構(gòu)體辨图。

make一個(gè)切片班套,切片這個(gè)結(jié)構(gòu)里面保存了三個(gè)內(nèi)容(指向數(shù)組的指針,長(zhǎng)度故河,和容量)吱韭。

數(shù)組

數(shù)組的含義非常清晰,用法也不多說鱼的。主要來說下GO中數(shù)組與C的區(qū)別理盆。

  1. 數(shù)組是值,在C中數(shù)組是指針凑阶。所以在函數(shù)中使用數(shù)組是直接傳輸數(shù)組的副本的
  2. 數(shù)組的大小是其類型的一部分猿规,所有[10]int 和[20]int的類型是不同的。所以如果在函數(shù)使用的過程中需要傳遞一個(gè)數(shù)組或者一個(gè)數(shù)組的指針那么一定要明確數(shù)組的大小

所以一般都使用切片

切片

使用非常頻繁宙橱,只需要熟悉幾個(gè)內(nèi)置函數(shù)

  1. append

  2. 取得其第1個(gè)到第4個(gè) slice[0:4]

二維數(shù)組>二維切片

二維切片的make方法和一維沒有什么太大的區(qū)別

映射

只要支持相等性判斷的類型都可以使用映射(切片沒有實(shí)現(xiàn)

  1. 若試圖通過映射中不存在的鍵來取值姨俩,就會(huì)返回與該映射中項(xiàng)的類型對(duì)應(yīng)的零值,也就是說如果value的T是bool师郑,那么key不存在情況下就會(huì)返回對(duì)應(yīng)默認(rèn)的零值环葵。但是有些時(shí)候,key存在對(duì)應(yīng)的value就是零值宝冕,那么怎么辦张遭。所以映射訪問會(huì)返回 value,ok = map[key]如果ok為true就表示存在。

  2. 刪除猬仁,使用delete

常量

常量只能是數(shù)字帝璧、字符(符文)先誉、字符串或布爾值。由于編譯時(shí)的限制的烁, 定義它們的表達(dá)式必須也是可被編譯器求值的常量表達(dá)式褐耳。例如 1<<3 就是一個(gè)常量表達(dá)式,而 math.Sin(math.Pi/4) 則不是渴庆,因?yàn)閷?duì) math.Sin 的函數(shù)調(diào)用在運(yùn)行時(shí)才會(huì)發(fā)生铃芦。

總體來說:常量必須是在編譯的時(shí)候就能確定的

type ByteSize float64

const (
    // 通過賦予空白標(biāo)識(shí)符來忽略第一個(gè)值
    _           = iota // ignore first value by assigning to blank identifier
    KB ByteSize = 1 << (10 * iota)
    MB
    GB
    TB
    PB
    EB
    ZB
    YB
)

變量

變量的初始化與常量類似,但其初始值也可以是在運(yùn)行時(shí)才被計(jì)算的一般表達(dá)式襟雷。

init

所有變量聲明都通過它們的初始化器求值后 init 才會(huì)被調(diào)用刃滓, 而那些 init 只有在所有已導(dǎo)入的包都被初始化后才會(huì)被求值

問題

  1. string與byte類型

  2. nil問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耸弄,隨后出現(xiàn)的幾起案子咧虎,更是在濱河造成了極大的恐慌,老刑警劉巖计呈,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砰诵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捌显,警方通過查閱死者的電腦和手機(jī)茁彭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扶歪,“玉大人理肺,你說我怎么就攤上這事∩屏” “怎么了妹萨?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)媳禁。 經(jīng)常有香客問我眠副,道長(zhǎng),這世上最難降的妖魔是什么竣稽? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮霍弹,結(jié)果婚禮上毫别,老公的妹妹穿的比我還像新娘。我一直安慰自己典格,他們只是感情好岛宦,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耍缴,像睡著了一般砾肺。 火紅的嫁衣襯著肌膚如雪挽霉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天变汪,我揣著相機(jī)與錄音侠坎,去河邊找鬼。 笑死裙盾,一個(gè)胖子當(dāng)著我的面吹牛实胸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播番官,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼庐完,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了徘熔?” 一聲冷哼從身側(cè)響起门躯,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酷师,沒想到半個(gè)月后生音,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窒升,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年缀遍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饱须。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡域醇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蓉媳,到底是詐尸還是另有隱情譬挚,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布酪呻,位于F島的核電站减宣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏玩荠。R本人自食惡果不足惜漆腌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阶冈。 院中可真熱鬧闷尿,春花似錦、人聲如沸女坑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匆骗。三九已至劳景,卻和暖如春誉简,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盟广。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國打工闷串, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衡蚂。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓窿克,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親毛甲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子年叮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章玻募,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 2,771評(píng)論 2 9
  • 出處---Go編程語言 歡迎來到 Go 編程語言指南只损。本指南涵蓋了該語言的大部分重要特性 Go 語言的交互式簡(jiǎn)介,...
    Tuberose閱讀 18,451評(píng)論 1 46
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,523評(píng)論 1 51
  • 我們都遇到過許許多多的陌生人七咧,就像天上的流星一樣跃惫,說不定哪顆就會(huì)給你留下深刻的印象。 ...
    勿忘Q閱讀 250評(píng)論 0 2
  • 我想 我不搭理你不是因?yàn)槠渌?只是你無聊的時(shí)候想起我要我跟你聊天 也沒什么不對(duì) 我們都是這樣 可是我跟你聊天跟你見...
    我是誰誰誰閱讀 457評(píng)論 0 0