亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Go語言第一課

郝林 架構師
難度入門
時長 3小時10分
學習人數
綜合評分8.57
92人評價 查看評價
9.0 內容實用
8.2 簡潔易懂
8.5 邏輯清晰
  • 本章涉及標準庫中的包比較多,看起來不是哪么輕松. 好吧,其實是哪些方法做什么的不知道 .
    查看全部
  • 解壓:$ sudo tar -zxf go1.9.1.linux-amd64.tar.gz -C /usr/local 測試:$ cd /usr/local/go $ bin/go version 設置:$ vim /etc/profile # 插入在最后一行 export GOROOT=/usr/local/go export GOPATH=~/golib:~/goproject export GOBIN=~/gobin export PATH=$PATH:$GOROOT/bin:$GOBIN $ source /etc/profile 完成:$ go version
    查看全部
    0 采集 收起 來源:Linux下的設置

    2018-02-21

  • Go語言-指針 指針操作涉及到兩個操作符——&和*。這兩個操作符均有多個用途。 但是當它們作為地址操作符出現時,前者的作用是取址,而后者的作用是取值。 更通俗地講,當地址操作符&被應用到一個值上時會取出指向該值的指針值, 而當地址操作符*被應用到一個指針值上時會取出該指針指向的那個值。它們可以被視為相反的操作。 除此之外,當*出現在一個類型之前(如*Person和*[3]string)時就不能被看做是操作符了, 而應該被視為一個符號。如此組合而成的標識符所表達的含義是作為第二部分的那個類型的指針類型。 我們也可以把其中的第二部分所代表的類型稱為基底類型。 例如,*[3]string是數組類型[3]string的指針類型,而[3]string是*[3]string的基底類型。 看結構體類型Person。它及其兩個方法的完整聲明如下: type Person struct { Name string Gender string Age uint8 Address string } func (person *Person) Grow() { person.Age++ } func (person *Person) Move(newAddress string) string { old := person.Address person.Address = newAddress return old } 注意,Person的兩個方法Grow和Move的接收者類型都是*Person,而不是Person。 只要一個方法的接收者類型是其所屬類型的指針類型而不是該類型本身,那么我就可以稱該方法為一個指針方法。 上面的Grow方法和Move方法都是Person類型的指針方法。 相對的,如果一個方法的接收者類型就是其所屬的類型本身,那么我們就可以把它叫做值方法。 我們只要微調一下Grow方法的接收者類型就可以把它從指針方法變為值方法: func (person Person) Grow() { person.Age++ } 定論:方法的接收者標識符所代表的是該方法當前所屬的那個值的一個副本,而不是該值本身。
    查看全部
    0 采集 收起 來源:Go語言-指針

    2018-03-22

  • 在Go語言中,一個接口類型總是代表著某一種類型(即所有實現它的類型)的行為。一個接口類型的聲明通常會包含關鍵字type、類型名稱、關鍵字interface以及由花括號包裹的若干方法聲明。示例如下: type Animal interface { Grow() Move(string) string } 注意,接口類型中的方法聲明是普通的方法聲明的簡化形式。它們只包括方法名稱、參數聲明列表和結果聲明列表。其中的參數的名稱和結果的名稱都可以被省略。不過,出于文檔化的目的,我還是建議大家在這里寫上它們。因此,Move方法的聲明至少應該是這樣的: Move(new string) (old string) 如果一個數據類型所擁有的方法集合中包含了某一個接口類型中的所有方法聲明的實現,那么就可以說這個數據類型實現了那個接口類型。所謂實現一個接口中的方法是指,具有與該方法相同的聲明并且添加了實現部分(由花括號包裹的若干條語句)。相同的方法聲明意味著完全一致的名稱、參數類型列表和結果類型列表。其中,參數類型列表即為參數聲明列表中除去參數名稱的部分。一致的參數類型列表意味著其長度以及順序的完全相同。對于結果類型列表也是如此。
    查看全部
    0 采集 收起 來源:Go語言-接口

    2018-02-07

  • go的使用
    查看全部
    0 采集 收起 來源:go語句初探

    2018-02-06

  • panic和recover
    查看全部
  • 厲害的defer
    查看全部
  • 切片類型生命 type slices []int 數組類型聲明 type numbers [5]int 創建一個切片 []int{1,2,3} 創建一個數組 [...]int{1,2,3} [3]int{1,2,3} var numbers=[5]int{1,2,3,4,5} 對于數組,切片操作 var slices1=numbers[1:3] 對于切片,切片操作 var slices2=slices1[1:2] cap函數
    查看全部
  • 數組聲明 type numbers [3]int 數組類型的值 [3]int{1, 2, 3} 將數組字面量賦值給一個變量 var numbers = [3]int{1, 2, 3} var numbers = [...]int{1, 2, 3} 取數組長度 var length = len(numbers)
    查看全部
  • go函數的返回結果的聲明 與形參的聲明一樣,并且,當只有一個返回值是,可以省略括號
    查看全部
    0 采集 收起 來源:Go語言-函數

    2018-01-30

  • go語言中的函數可以返回多個結果
    查看全部
    0 采集 收起 來源:Go語言-函數

    2018-01-30

  • 通道 是Go語言中一種獨特的數據結構,它可以用于在不同的Goroutine之間傳遞類型化的數據,并且是并發安全的, 通道類型的表示方法為:chan T (左邊是代表通道類型的關鍵字chan ,而右邊為可變部分,代表該通道類型允許傳遞的數據的類型, 注意:對通道值的重復關閉會引發運行是恐慌,這會使程序崩潰
    查看全部
  • 言-函數 在Go語言中,函數是一等(first-class)類型。這意味著,我們可以把函數作為值來傳遞和使用。 函數代表著這樣一個過程:它接受若干輸入(參數),并經過一些步驟(語句)的執行之后再返回輸出(結果)。 特別的是,Go語言中的函數可以返回多個結果。 函數類型的字面量由關鍵字func、由圓括號包裹參數聲明列表、空格以及可以由圓括號包裹的結果聲明列表組成。 其中,參數聲明列表中的單個參數聲明之間是由英文逗號分隔的。每個參數聲明由參數名稱、空格和參數類型組成。 參數聲明列表中的參數名稱是可以被統一省略的。結果聲明列表的編寫方式與此相同。結果聲明列表中的結果名稱也是可以被統一省略的。 并且,在只有一個無名稱的結果聲明時還可以省略括號。示例如下: func(input1 string ,input2 string) string 這一類型字面量表示了一個接受兩個字符串類型的參數且會返回一個字符串類型的結果的函數。 如果我們在它的左邊加入type關鍵字和一個標識符作為名稱的話,那就變成了一個函數類型聲明,就像這樣: type MyFunc func(input1 string ,input2 string) string 函數值(或簡稱函數)的寫法與此不完全相同。 編寫函數的時候需要先寫關鍵字func和函數名稱,后跟參數聲明列表和結果聲明列表,最后是由花括號包裹的語句列表。例如: func myFunc(part1 string, part2 string) (result string) { result = part1 + part2 return } 如果結果聲明是帶名稱的,那么它就相當于一個已被聲明但未被顯式賦值的變量。 我們可以為它賦值且在return語句中省略掉需要返回的結果值。該函數還有一種更常規的寫法: func myFunc(part1 string, part2 string) string { return part1 + part2 } 注意,函數myFunc是函數類型MyFunc的一個實現。
    查看全部
    0 采集 收起 來源:Go語言-函數

    2018-01-26

  • Go語言-通道的更多種類 通道有帶緩沖和非緩沖之分。緩沖通道中可以緩存N個數據。我們在初始化一個通道值的時候必須指定這個N。 相對的,非緩沖通道不會緩存任何數據。發送方在向通道值發送數據的時候會立即被阻塞, 直到有某一個接收方已從該通道值中接收了這條數據。 非緩沖的通道值的初始化方法如:make(chan int, 0) 緩沖的通道的初始化方法如:make(chan int, 5) 注意,非緩沖通道給予make函數的第二個參數值是0。而緩沖通道給予make函數的第二個參數值是一個確定的數值。 我們還可以以數據在通道中的傳輸方向為依據來劃分通道。默認情況下,通道都是雙向的,即雙向通道。 如果數據只能在通道中單向傳輸,那么該通道就被稱作單向通道。 我們在初始化一個通道值的時候不能指定它為單向。但是,在編寫類型聲明的時候,我們卻是可以這樣做的。例如: type Receiver <-chan int 類型Receiver代表了一個只可從中接收數據的單向通道類型。這樣的通道也被稱為接收通道。 在關鍵字chan左邊的接收操作符<-形象地表示出了數據的流向。 相對應的,如果我們想聲明一個發送通道類型,那么應該這樣: type Sender chan<- int 這次<-被放在了chan的右邊,并且“箭頭”直指“通道”。 我們可以把一個雙向通道值賦予上述類型的變量,就像這樣: var myChannel = make(chan int, 3) //帶緩沖的通道 var sender Sender = myChannel //發送通道 var receiver Receiver = myChannel //接收通道 但是,反之則是不行的。像下面這樣的代碼是通不過編譯的: var myChannel1 chan int = sender 單向通道的主要作用是約束程序對通道值的使用方式。 比如,我們調用一個函數時給予它一個發送通道作為參數,以此來約束它只能向該通道發送數據。 又比如,一個函數將一個接收通道作為結果返回,以此來約束調用該函數的代碼只能從這個通道中接收數據。
    查看全部
  • Myint類型僅擁有Decrease()方法…………什么意思
    查看全部

舉報

0/150
提交
取消
課程須知
本課程的目的是帶領大家入Go語言的門,然后再猛推一把!需要一些Linux Shell的基礎,不熟悉Linux的童鞋,可以先去《Linux達人養成計劃Ⅰ》中修煉一下~~
老師告訴你能學到什么?
1、怎樣使用Go語言編程 2、怎樣才算會用Go語言編程 3、怎樣運用那些Go語言的特性去編程 4、Go語言的那些特性的實際益處在哪兒

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!