分享一些為PHPer準備的Go入門知識
分享一些為PHPer準備的Go入門知識lang語言教學#專欄為大家分享一些為PH
##分享一些為PHPer準備的Go入門知識lang語言教學時幫助!推薦:《golang教學
》MacOS
我使用的是Mac ,所以透過Homebrew 安裝go :
brew install go
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
要建立項目,請在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") } }
分享一些為PHPer準備的Go入門知識 使用术语 package
来为其内容创建命名空间。如果你的 分享一些為PHPer準備的Go入門知識 代码中有一个名为 controllers
的文件夹,在这个文件夹下的所有文件都需要以 package controllers
开头。想要在其他包内导入控制器,你需要使用 import "helloworld/controllers"
。包内任何以大写字母开头的名称都可以用在其他包中。 如果在 controllers
中有一个名为func HelloWorld ()
的函数,你可以在 controllers
导入之后使用 controllers.HelloWorld()
来执行这个函数。任何以小写字母开头的名称只能在包内使用。不需要 private
或 public
进行声明。
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入門知識 中,错误并不会视为异常。没有 try
或 catch
的机制。作为替代,如果发生错误,需要从函数内返回错误。分享一些為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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

如何在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標準函式庫,擴充其功能,而Go框架由獨立函式庫組成,以實現特定目的。 GoLang框架更靈活,Go框架更容易上手。 GoLang框架在效能上稍有優勢,Go框架的可擴充性更高。案例:gin-gonic(Go框架)用於建立RESTAPI,而Echo(GoLang框架)用於建立Web應用程式。

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

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

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

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