ホームページ >バックエンド開発 >Golang >PHPer のための Go の入門知識を共有する

PHPer のための Go の入門知識を共有する

藏色散人
藏色散人転載
2020-08-19 13:17:502667ブラウズ

次の列は、## PHPer のための Go の入門知識を共有するlang Language Tutorial # columnのPHPERの入門的な知識を共有します。困っている友人に役立つことを願っています!

PHPer のための Go の入門知識を共有する

#最近、私は作業チーム用の内部コマンド ライン インターフェイス アプリケーションの開発を開始しました。私が主に選択しているプログラミング言語は PHP ですが、インタプリタをインストールせずにどのプラットフォームでも実行できる言語でプログラムを作成したいと考えていました。また、配布とインストールを容易にするために、アプリケーションをバイナリ ファイルに自己完結型にしておきたいと考えています。 PHPer のための Go の入門知識を共有する をダウンロードしたところ、学習がいかに簡単で、短期間で生産性が向上したかに驚きました。 PHPer のための Go の入門知識を共有する の手続き型プログラミング モデルは、PHP 開発者の考え方に非常に適しており、アプリケーションをすぐに起動して実行することができました。ただし、PHP とは明らかな違いがいくつかあるので、PHPer のための Go の入門知識を共有する を学びたい他の PHP 開発者とそれらを共有したいと思いました。

推奨: "golang チュートリアル"

MacOS

Mac を使用しているため、Homebrew を使用してインストールしました。 brew install go 。 Mac に Homebrew がインストールされていない場合は、Homebrew を強くお勧めします。

Windows と Linux

PHPer のための Go の入門知識を共有する の公式 Web サイトには、Windows システム用の「Next Next」インストーラーを含む、各オペレーティング システムのダウンロード リソースがあります。

Start

PHPer のための Go の入門知識を共有する では、すべてのプロジェクトのソース コードが 1 つのディレクトリ 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 の入門知識を共有する プログラムの開始点は、メイン パッケージの main 関数です。次に、go run main.go を実行してプログラムを実行します。 go install を実行すると、プログラムがコンパイルされて bin ディレクトリに配置されるため、ターミナルで helloworld を実行するとコードが実行されます。 。

PHP との主な違い

プロジェクトのセットアップが完了したので、PHPer のための 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() 来执行这个函数。任何以小写字母开头的名称只能在包内使用。不需要 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。