首頁 後端開發 Golang 分享一些為PHPer準備的Go入門知識

分享一些為PHPer準備的Go入門知識

Aug 19, 2020 pm 01:17 PM
go golang

##上建立中由

分享一些為PHPer準備的Go入門知識lang語言教學#專欄為大家分享一些為PH

##分享一些為PHPer準備的Go入門知識lang語言教學時幫助!

分享一些為PHPer準備的Go入門知識

最近,我開始為我的工作團隊開發內部命令列介面應用程式。我選擇的主要程式語言是PHP,但是我想用可以在任何平台上運行的語言創建該程序,而不必安裝解釋器。我還希望該應用程式可以獨立包含在一個二進位檔案中,以便於分發和安裝。我下載了分享一些為PHPer準備的Go入門知識,對它的易學性和在短時間內獲得的生產力感到驚訝。 分享一些為PHPer準備的Go入門知識的程式化程式設計模型真的很適合我們PHP開發者的思考習慣,我得以快速啟動並運行該應用程式。儘管與PHP有一些明顯的區別,所以我想與想要學習分享一些為PHPer準備的Go入門知識的其他PHP開發人員分享這些差異。

推薦:《golang教學

MacOS

我使用的是Mac ,所以透過Homebrew 安裝go : brew install go

。如果你的 Mac 還沒有安裝 Homebrew ,我強烈建議你使用。

Windows & Linux

分享一些為PHPer準備的Go入門知識 的官網有每個作業系統的下載資源,包括 Windows 系統的「下一步下一步」的安裝器。

開始

在 分享一些為PHPer準備的Go入門知識 裡面,所有工程的原始碼都保存在一個目錄中:GOPATH。 GOPATH 預設被設定成家目錄下的 go 下面,例如 /Users/andrewdavis/go。 GOPATH 下面有 bin 目錄和 src 目錄。 bin 目錄存放你下載的二進位形式的依賴 ,你可以將 bin 目錄加入你的 PATH 環境變數裡面。你可以在終端機編輯檔案 .bashrc/.zshrc ,加入 export PATH=$PATH:$(go env GOPATH)/bin。學習分享一些為PHPer準備的Go入門知識lang , 你可以在終端機上執行指令 go get golang.org/x/tour/gotour 下載分享一些為PHPer準備的Go入門知識程式設計指南, go get 將下載參數裡面指定的第三方所依賴的原始碼和二進位檔案。現在你可以在終端機上運行 gotour

, 它將啟動一個 web 伺服器,並自動開啟瀏覽器存取。

要建立項目,請在GOPATH中的src#下建立一個目錄:mkdir -p $GOPATH/src/helloworld。開啟這個資料夾cd $GOPATH/src/helloworld並建立一個名為main,touch main.go

。在該檔案中,輸入以下內容:

package main

import "fmt"

func main() {
  fmt.Println("Hello world!")
}
登入後複製
所有分享一些為PHPer準備的Go入門知識程式的起點是主程式包中的主要功能。接下來,你可以跑go run main.go來執行程式。您也可以執行go install,程式將被編譯並放在bin目錄中,這樣您就可以在終端機中執行helloworld

,它將運行您的代碼。

與PHP的主要區別

現在您已經設定了一個項目,您可以開始探索不同的go功能。你會注意到的第一件事是分享一些為PHPer準備的Go入門知識中不需要分號。語句的結尾由新行偵測。這裡還有一些我花了一些時間才理解的差異:

變數

#分享一些為PHPer準備的Go入門知識 是一門靜態和強類型語言, 因此每個變數都有分配給它的類型。函數中的變數是使用 := 賦值的, 此運算子將為變數自動指派類型: name := "Andrew" // name 現在是一個字串. 要創建一個不設定任何資料的變數或在函數之外建立變量,您必須使用var 關鍵字:  var name string

If 語句

if語句的工作方式和PHP中是相同的, 但是它不需要用括號包住判斷條件. 這種差異最初讓我在閱讀分享一些為PHPer準備的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

####

分享一些為PHPer準備的Go入門知識 使用术语 package 来为其内容创建命名空间。如果你的 分享一些為PHPer準備的Go入門知識 代码中有一个名为 controllers 的文件夹,在这个文件夹下的所有文件都需要以 package controllers 开头。想要在其他包内导入控制器,你需要使用 import "helloworld/controllers"。包内任何以大写字母开头的名称都可以用在其他包中。 如果在 controllers 中有一个名为func HelloWorld () 的函数,你可以在 controllers 导入之后使用 controllers.HelloWorld() 来执行这个函数。任何以小写字母开头的名称只能在包内使用。不需要 privatepublic 进行声明。

Strings

在 分享一些為PHPer準備的Go入門知識 中,所有字符串必须用双引号包围。分享一些為PHPer準備的Go入門知識 中的一个单引号值代表一个 rune (一个 Unicode字符)。习惯性的,我会使用单引号声明字符串,因为这是 PHP 中的常见做法。使用双引号声明字符串会需要一段时间调整。

var name = "Andrew"
var copy = '©'
登入後複製

Structs vs Classes

分享一些為PHPer準備的Go入門知識 没有像 PHP 的 class 语法. 取而代之的, 它使用结构体对自定义数据结构建模. 你可以像下面这样声明一个结构体:

package main

type Cup struct {
  name string
  color string
  volume int
}
登入後複製

你可以通过在函数名称之前引用结构体来为该结构体添加方法。

func (c Cup) nameAndColor() string {
  return c.name + ": " + c.color
}
登入後複製

然后您可以通过在结构体名称后用大括号传递其初始值来实例化一个结构体. 使用 . 来调用结构体的方法.

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

若要创建一个方法修改结构体实例, 该方法必须引用指向结构体的指针:

func (c *Cup) crush() {
  c.volume = 0
}
登入後複製

错误

在 分享一些為PHPer準備的Go入門知識 中,错误并不会视为异常。没有 trycatch 的机制。作为替代,如果发生错误,需要从函数内返回错误。分享一些為PHPer準備的Go入門知識 支持一个函数返回多个值。如果调用的函数可能会返回错误,你必须检测这个错误是否存在,然后处理这个错误。

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

当然,分享一些為PHPer準備的Go入門知識 还有很多东西要学,但是希望这能帮助你更好的开始。学习 分享一些為PHPer準備的Go入門知識 的很好的资源有很多。对我最有帮助的是 分享一些為PHPer準備的Go入門知識 文档 和 分享一些為PHPer準備的Go入門知識 By Example。如果你有任何想法或问题,请留下评论。 谢谢阅读!

原文地址:https://dev.to/restoreddev/introduction-to-go-for-php-developers-33ko

译文地址:https://learnku.com/go/t/46321

以上是分享一些為PHPer準備的Go入門知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用 Golang 安全地讀取和寫入檔案? 如何使用 Golang 安全地讀取和寫入檔案? Jun 06, 2024 pm 05:14 PM

在Go中安全地讀取和寫入檔案至關重要。指南包括:檢查檔案權限使用defer關閉檔案驗證檔案路徑使用上下文逾時遵循這些準則可確保資料的安全性和應用程式的健全性。

如何為 Golang 資料庫連線配置連線池? 如何為 Golang 資料庫連線配置連線池? Jun 06, 2024 am 11:21 AM

如何為Go資料庫連線配置連線池?使用database/sql包中的DB類型建立資料庫連線;設定MaxOpenConns以控制最大並發連線數;設定MaxIdleConns以設定最大空閒連線數;設定ConnMaxLifetime以控制連線的最大生命週期。

如何在 Golang 單元測試中使用 gomega 進行斷言? 如何在 Golang 單元測試中使用 gomega 進行斷言? Jun 05, 2024 pm 10:48 PM

如何在Golang單元測試中使用Gomega進行斷言在Golang單元測試中,Gomega是一個流行且功能強大的斷言庫,它提供了豐富的斷言方法,使開發人員可以輕鬆驗證測試結果。安裝Gomegagoget-ugithub.com/onsi/gomega使用Gomega進行斷言以下是使用Gomega進行斷言的一些常用範例:1.相等斷言import"github.com/onsi/gomega"funcTest_MyFunction(t*testing.T){

Golang框架與Go框架:內部架構與外部特性對比 Golang框架與Go框架:內部架構與外部特性對比 Jun 06, 2024 pm 12:37 PM

GoLang框架與Go框架的差異體現在內部架構與外部特性。 GoLang框架基於Go標準函式庫,擴充其功能,而Go框架由獨立函式庫組成,以實現特定目的。 GoLang框架更靈活,Go框架更容易上手。 GoLang框架在效能上稍有優勢,Go框架的可擴充性更高。案例:gin-gonic(Go框架)用於建立RESTAPI,而Echo(GoLang框架)用於建立Web應用程式。

如何在 Golang 中將 JSON 資料保存到資料庫中? 如何在 Golang 中將 JSON 資料保存到資料庫中? Jun 06, 2024 am 11:24 AM

可以透過使用gjson函式庫或json.Unmarshal函數將JSON資料儲存到MySQL資料庫中。 gjson函式庫提供了方便的方法來解析JSON字段,而json.Unmarshal函數需要一個目標類型指標來解組JSON資料。這兩種方法都需要準備SQL語句和執行插入操作來將資料持久化到資料庫中。

Golang 框架中的錯誤處理最佳實務有哪些? Golang 框架中的錯誤處理最佳實務有哪些? Jun 05, 2024 pm 10:39 PM

最佳實踐:使用明確定義的錯誤類型(errors套件)建立自訂錯誤提供更多詳細資訊適當記錄錯誤正確傳播錯誤,避免隱藏或抑制根據需要包裝錯誤以添加上下文

如何解決golang框架中常見的安全問題? 如何解決golang框架中常見的安全問題? Jun 05, 2024 pm 10:38 PM

如何在Go框架中解決常見的安全問題隨著Go框架在Web開發中的廣泛採用,確保其安全至關重要。以下是解決常見安全問題的實用指南,附帶範例程式碼:1.SQL注入使用預編譯語句或參數化查詢來防止SQL注入攻擊。例如:constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

如何找出 Golang 正規表示式符合的第一個子字串? 如何找出 Golang 正規表示式符合的第一個子字串? Jun 06, 2024 am 10:51 AM

FindStringSubmatch函數可找出正規表示式匹配的第一個子字串:此函數傳回包含匹配子字串的切片,第一個元素為整個匹配字串,後續元素為各個子字串。程式碼範例:regexp.FindStringSubmatch(text,pattern)傳回符合子字串的切片。實戰案例:可用於匹配電子郵件地址中的域名,例如:email:="user@example.com",pattern:=@([^\s]+)$獲取域名match[1]。

See all articles