PHPer에 대한 Go 입문 지식을 공유하세요

藏色散人
풀어 주다: 2020-08-19 13:19:01
앞으로
2604명이 탐색했습니다.

에서는 Phper를 위해 준비된 PHPer에 대한 Go 입문 지식을 공유하세요 입문 지식을 공유할 예정입니다. 필요한 친구들에게 도움이 되기를 바랍니다!

최근에 저는 작업 팀을 위한 내부 명령줄 인터페이스 애플리케이션 개발을 시작했습니다. 제가 선택한 주요 프로그래밍 언어는 PHP이지만 인터프리터를 설치하지 않고도 모든 플랫폼에서 실행되는 언어로 프로그램을 만들고 싶었습니다. 또한 더 쉽게 배포하고 설치할 수 있도록 애플리케이션이 바이너리 파일에 자체적으로 포함되기를 원합니다. 저는 PHPer에 대한 Go 입문 지식을 공유하세요를 다운로드했고 배우기가 얼마나 쉽고 짧은 시간에 얼마나 생산적인지 놀랐습니다. PHPer에 대한 Go 입문 지식을 공유하세요의 절차적 프로그래밍 모델은 우리 PHP 개발자 사고방식에 정말 적합했고, 애플리케이션을 빠르게 시작하고 실행할 수 있었습니다. 하지만 PHP에는 몇 가지 명백한 차이점이 있으므로 PHPer에 대한 Go 입문 지식을 공유하세요를 배우고 싶어하는 다른 PHP 개발자와 이를 공유하고 싶었습니다.

PHPer에 대한 Go 입문 지식을 공유하세요추천: "

golang tutorial

"

MacOS

저는 Mac을 사용하고 있어서 Homebrew를 통해 go를 설치했습니다: brew install go. Mac에 Homebrew가 설치되어 있지 않다면 적극 권장합니다.

Windows & Linux

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

PHPer에 대한 Go 입문 지식을 공유하세요의 공식 웹사이트에는 Windows 시스템용 "Next Next" 설치 프로그램을 포함하여 각 운영 체제에 대한 다운로드 리소스가 있습니다.

Start

PHPer에 대한 Go 입문 지식을 공유하세요에서는 모든 프로젝트의 소스 코드가 GOPATH라는 하나의 디렉터리에 저장됩니다. 기본적으로 GOPATH는 /Users/andrewdavis/go와 같은 홈 디렉터리로 이동하도록 설정되어 있습니다. GOPATH 아래에는 bin 디렉터리와 src 디렉터리가 있습니다. bin 디렉터리는 다운로드한 종속성의 바이너리 형식을 저장합니다. PATH 환경 변수에 bin 디렉터리를 추가할 수 있습니다. 터미널에서 .bashrc/.zshrc 파일을 편집하고 export PATH=$PATH:$(go env GOPATH)/bin을 추가할 수 있습니다. PHPer에 대한 Go 입문 지식을 공유하세요lang을 배우려면 터미널에서 go get golang.org/x/tour/gotour 명령을 실행하여 PHPer에 대한 Go 입문 지식을 공유하세요 프로그래밍 가이드를 다운로드하면 세 번째 항목이 다운로드됩니다. - 소스 코드 및 바이너리 파일에 지정된 파티 종속성. 이제 터미널에서 gotour를 실행할 수 있으며 웹 서버가 시작되고 액세스를 위해 자동으로 브라우저가 열립니다.

프로젝트를 생성하려면 GOPATH의 src 아래에 mkdir -p $GOPATH/src/helloworld 디렉토리를 생성하세요. 이 폴더 cd $GOPATH/src/helloworld를 열고 main, touch main.go라는 파일을 만듭니다. 해당 파일에 다음을 입력하세요.

package main

import "fmt"

func main() {
  value := false
  if value {
    fmt.Println("Value is true")
  } else {
    fmt.Println("Value is false")
  }
}
로그인 후 복사

모든 PHPer에 대한 Go 입문 지식을 공유하세요 프로그램의 시작점은 메인 패키지의 주요 기능입니다. 다음으로 go run main.go를 실행하여 프로그램을 실행할 수 있습니다. go install을 실행할 수도 있으며 프로그램이 컴파일되어 bin 디렉터리에 배치되므로 터미널에서 helloworld를 실행할 수 있습니다. 코드를 실행합니다. 🎜🎜🎜PHP와의 주요 차이점🎜🎜🎜이제 프로젝트가 설정되었으므로 다양한 PHPer에 대한 Go 입문 지식을 공유하세요 기능을 탐색할 수 있습니다. 가장 먼저 눈에 띄는 것은 PHPer에 대한 Go 입문 지식을 공유하세요에서는 세미콜론이 필요하지 않다는 것입니다. 명령문의 끝은 새 줄로 감지됩니다. 다음은 제가 이해하는 데 시간이 좀 걸린 몇 가지 차이점입니다. 🎜🎜🎜Variables🎜🎜🎜PHPer에 대한 Go 입문 지식을 공유하세요는 정적이고 강력한 유형의 언어이므로 모든 변수에는 유형이 할당되어 있습니다. 함수의 변수는 변수에 자동으로 유형을 할당하는 :=를 사용하여 할당됩니다. name := "Andrew" // name은 이제 문자열입니다. 데이터를 설정하지 않거나 함수 외부에서 변수를 생성하려면 var 키워드(var name string)를 사용해야 합니다. 🎜🎜🎜If 문 🎜🎜🎜if 문은 PHP에서와 동일한 방식으로 작동하지만 조건을 둘러싸는 데 괄호가 필요하지 않습니다. 이 차이로 인해 처음에는 PHPer에 대한 Go 입문 지식을 공유하세요 코드를 읽을 때 혼란스러웠습니다. 읽을 수 있습니다.🎜
var name = "Andrew"
var copy = '©'
로그인 후 복사
로그인 후 복사
🎜🎜패키지와 네임스페이스🎜🎜

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!