<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為 PHPer 準(zhǔn)備的 Go 入門知識

          共 3657字,需瀏覽 8分鐘

           ·

          2020-11-08 00:42

          推薦文章

          在Windows10安裝部署Golang開發(fā)環(huán)境

          Go語言生成二維碼是如此簡單

          一文讓你知道為什么學(xué)了PHP的都要轉(zhuǎn)學(xué)Go語言

          免費獲取Git GO Java視頻教程

          用 PHP和Golang 來刷leetCode 之 無重復(fù)字符 最長子串

          最近,我開始為我的工作團隊開發(fā)內(nèi)部命令行界面應(yīng)用程序。我選擇的主要編程語言是 PHP,但是我想用可以在任何平臺上運行的語言創(chuàng)建該程序,而不必安裝解釋器。我還希望該應(yīng)用程序可以獨立包含在一個二進制文件中,以便于分發(fā)和安裝。我下載了 Go,對它的易學(xué)性和在短時間內(nèi)獲得的生產(chǎn)力感到驚訝。Go 的程序化編程模型真的很適合我們 PHP 開發(fā)者的思維習(xí)慣,我得以快速啟動并運行該應(yīng)用程序。盡管與 PHP 有一些明顯的區(qū)別,所以我想與想要學(xué)習(xí) Go 的其他 PHP 開發(fā)人員分享這些區(qū)別。


          安裝


          MacOS
          我使用的是 Mac ,所以通過 Homebrew 安裝 go : brew install go 。如果你的 Mac 還沒有安裝 Homebrew ,我強烈建議你使用。


          Windows & Linux
          Go 的官網(wǎng)有每種操作系統(tǒng)的下載資源,包括針對 Windows 系統(tǒng)的「下一步下一步」的安裝器。


          開始
          在 Go 里面,所有工程的源代碼都保存在一個目錄:GOPATH。GOPATH 默認被設(shè)置成家目錄下的 go 下面,比如 /Users/andrewdavis/go。GOPATH 下面有 bin 目錄和 src 目錄。bin 目錄存放你下載的二進制形式的依賴 ,你可以將 bin 目錄添加到你的 PATH 環(huán)境變量里面。你可以在終端編輯文件 .bashrc/.zshrc ,添加 export PATH=$PATH:$(go env GOPATH)/bin。學(xué)習(xí) Golang , 你可以在終端運行命令 go get golang.org/x/tour/gotour 下載 Go 編程指南, go get 將下載參數(shù)里面指定的第三方依賴的源碼和二進制文件?,F(xiàn)在你可以在終端運行 gotour , 它將啟動一個 web 服務(wù)器,并自動打開瀏覽器訪問。

          要創(chuàng)建項目,請在 GOPATH 中的 src 下創(chuàng)建一個目錄:mkdir -p $GOPATH/src/helloworld。打開這個文件夾 cd $GOPATH/src/helloworld 并創(chuàng)建一個名為 maintouch main.go。在該文件中,輸入以下內(nèi)容:

          package main
          import "fmt"
          func main() { fmt.Println("Hello world!")}


          所有 Go 程序的起點是主程序包中的主要功能。接下來,你可以跑 go run main.go 運行程序。您還可以運行 go install,程序?qū)⒈痪幾g并放在 bin 目錄中,這樣您就可以在終端中執(zhí)行 helloworld,它將運行您的代碼。


          與 PHP 的主要區(qū)別
          現(xiàn)在您已經(jīng)設(shè)置了一個項目,您可以開始探索不同的 go 功能。你會注意到的第一件事是 Go 中不需要分號。語句的結(jié)尾由新行檢測。這里還有一些我花了一些時間才理解的差異:


          變量
          Go 是一門靜態(tài)和強類型語言,因此每個變量都有分配給它的類型。函數(shù)中的變量是使用 := 賦值的,該運算符將為變量自動分配類型: name := "Andrew" // name 現(xiàn)在是一個字符串. 要創(chuàng)建一個不設(shè)置任何數(shù)據(jù)的變量或者在函數(shù)之外創(chuàng)建變量,您必須使用 var 關(guān)鍵字:  var name string。


          If 語句
          if 語句的工作方式和 PHP 中是相同的,但是它不需要用括號包住判斷條件。這種差異最初讓我在閱讀 Go 的代碼時感到困惑。但是,我認為這讓代碼更具可讀性.

          package main
          import "fmt"
          func main() { value := false if value { fmt.Println("Value is true") } else { fmt.Println("Value is false") }}


          Packages vs Namespaces
          Go 使用術(shù)語 package 來為其內(nèi)容創(chuàng)建命名空間。如果你的 Go 代碼中有一個名為 controllers 的文件夾,在這個文件夾下的所有文件都需要以 package controllers 開頭。想要在其他包內(nèi)導(dǎo)入控制器,你需要使用 import "helloworld/controllers"。包內(nèi)任何以大寫字母開頭的名稱都可以用在其他包中。如果在 controllers 中有一個名為 func HelloWorld () 的函數(shù),你可以在 controllers 導(dǎo)入之后使用 controllers.HelloWorld() 來執(zhí)行這個函數(shù)。任何以小寫字母開頭的名稱只能在包內(nèi)使用。不需要 private public 進行聲明。


          Strings
          在 Go 中,所有字符串必須用雙引號包圍。Go 中的一個單引號值代表一個 rune (一個 Unicode 字符)。習(xí)慣性的,我會使用單引號聲明字符串,因為這是 PHP 中的常見做法。使用雙引號聲明字符串會需要一段時間調(diào)整。

          var name = "Andrew"var copy = '?'


          Structs vs Classes
          Go 沒有像 PHP 的 class 語法。取而代之的,它使用結(jié)構(gòu)體對自定義數(shù)據(jù)結(jié)構(gòu)建模。你可以像下面這樣聲明一個結(jié)構(gòu)體:

          package main
          type Cup struct { name string color string volume int}


          你可以通過在函數(shù)名稱之前引用結(jié)構(gòu)體來為該結(jié)構(gòu)體添加方法。

          func (c Cup) nameAndColor() string {  return c.name + ": " + c.color}


          然后您可以通過在結(jié)構(gòu)體名稱后用大括號傳遞其初始值來實例化一個結(jié)構(gòu)體。使用 . 來調(diào)用結(jié)構(gòu)體的方法.

          func main() {  c := Cup{name: "Solo", color: "Red", volume: 12}  c.nameAndColor() // 返回 "Solo: Red"}

          若要創(chuàng)建一個方法修改結(jié)構(gòu)體實例,該方法必須引用指向結(jié)構(gòu)體的指針:

          func (c *Cup) crush() {  c.volume = 0}


          錯誤
          在 Go 中,錯誤并不會視為異常。沒有 try catch 的機制。作為替代,如果發(fā)生錯誤,需要從函數(shù)內(nèi)返回錯誤。Go 支持一個函數(shù)返回多個值。如果調(diào)用的函數(shù)可能會返回錯誤,你必須檢測這個錯誤是否存在,然后處理這個錯誤。

          package main
          import "fmt"
          func GetName(name string) (string, error) { if name == "Bob" { return "", fmt.Errorf("Name cannot be Bob") }
          return name, nil}
          func main() { name, err := GetName("Bob") if err != nil { fmt.Println("Uh-oh an error has occurred") }}

          Final
          當(dāng)然,Go 還有很多東西要學(xué),但是希望這能幫助你更好的開始。

          視頻教程獲取方式:公眾號后臺回復(fù)關(guān)鍵字:go語言入門到精通

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产又粗又大又爽视频 | 色色66| 涩婷婷 | 99在线观看免费高清 | 操逼精品 |