목차
데이터 유형
变量
类型转换
数组
Maps
对象类型
函数
控制语句
If-Else
Switch
For 循环
While 循环
Foreach/Range
스위치
For 루프
While 루프
백엔드 개발 PHP 튜토리얼 Go와 PHP의 구문은 어떻게 비교되나요?

Go와 PHP의 구문은 어떻게 비교되나요?

Jun 30, 2020 pm 05:32 PM
php PHP 시작하기 PHP 튜토리얼

Go와 PHP의 구문은 어떻게 비교되나요?

Go는 Google이 설계한 정적인 유형의 컴파일 언어입니다. C와 다소 비슷하지만 가비지 수집, 메모리 안전성, 구조적 유형, 동시성 등 더 많은 장점을 포함합니다. 동시성 메커니즘을 통해 멀티 코어 및 네트워크 시스템이 이를 최대한 활용할 수 있습니다. 이는 GoLang의 베스트 셀러 포인트 중 하나입니다. 또한 Go는 빠르고 표현력이 풍부하며 깨끗하고 효율적입니다. 이것이 개발자가 Go를 배우기에 매력적인 이유입니다.

PHP는 초보자가 코딩을 더 쉽게 만들어주는 동적 유형 언어입니다. 이제 문제는 PHP 개발자가 동적 유형 언어에서 Go와 같은 정적인 유형 언어로 전환할 수 있느냐는 것입니다. 알아보기 위해 Go와 PHP의 구문 차이를 비교해 보겠습니다.

데이터 유형

  • Go는 부호 있는 정수와 부호 없는 정수를 모두 지원하는 반면, PHP는 부호 있는 정수만 지원합니다.
  • 또 다른 주요 차이점은 배열입니다. Go에는 배열과 맵에 대한 별도의 유형이 있는 반면, PHP 배열은 실제로 순서가 지정된 맵입니다.
  • Go에는 PHP에 비해 객체가 없습니다. 그러나 Go에는 object와 유사한 struct 유형이 있습니다. objectstruct类型。

PHP 数据类型:

boolean
string
integer // Signed integer, PHP does not support unsigned integers.
float (also known as "floats", "doubles", or "real numbers")
array
object
null
resource
로그인 후 복사

Go 数据类型:

string
bool
int  int8  int16  int32  int64 // Signed integer
uint uint8 uint16 uint32 uint64 uintptr // Unsigned integers
byte // alias for uint8
rune // alias for int32
float32 float64
complex64 complex128
array
slices
map
struct
로그인 후 복사

变量

Go使用var声明全局变量和函数变量。但是,它也支持带有初始化程序的简写语法,但只能在函数内部使用。另一方面,PHP仅支持带有初始化程序的变量声明。

// 变量声明
// Go               // PHP
var i int           $i = 0      // integer
var f float64       $f = 0.0    // float
var b bool          $b = false  // boolean
var s string        $s = ""     // string
var a [2]string     $a = []     // array
// 简短的变量声明
// Go                      // PHP
i := 0                     $i = 0      // integer
f := 0.0                   $f = 0.0    // float
b := false                 $b = false  // boolean
s := ""                    $s = ""     // string
a := [1]string{"hello"}    $a = []     // array
로그인 후 복사

类型转换

// Go
i := 42             // Signed integer
f := float64(i)     // Float
u := uint(f)        // Unsigned integer
// PHP
$i = 1;
$f = (float) $i;    // 1.0
$b = (bool) $f      // true
$s = (string) $b    // "1"
로그인 후 복사

数组

// Go
var a [2]string
a[0] = "Hello"
a[1] = "World"
// OR
a := [2]string{"hello", "world"}
// PHP
$a = [
    "hello",
    "world"
];
로그인 후 복사

Maps

// Go
m := map[string]string{
    "first_name": "Foo",
    "last_name": "Bar",
}
// PHP
$m = [
    "first_name" => "Foo",
    "last_name" => "Bar"
];
로그인 후 복사

对象类型

Go不支持对象。但是,您可以使用structs实现object之类的语法。

// Go
package main
import "fmt"
type Person struct {
    Name string
    Address string
}
func main() {
    person := Person{"Foo bar", "Sydney, Australia"}
    fmt.Println(person.Name)
}
// PHP
$person = new stdClass;
$person->Name = "Foo bar";
$person->Address = "Sydney, Australia";
echo $person->Name;
// 或使用类型转换
$person = (object) [
    'Name' => "Foo bar",
    'Address' => "Sydney, Australia"
];
echo $person->Name;
로그인 후 복사

函数

Go和PHP函数之间的主要区别是; Go函数可以返回任意数量的结果,而PHP函数只能返回一个结果。但是,PHP可以通过返回数组来模拟相同的功能。

// Go
package main
import "fmt"
func fullname(firstName string, lastName string) (string) {
    return firstName + " " + lastName
}
func main() {
    name := fullname("Foo", "Bar")
    fmt.Println(name)
}
// PHP
function fullname(string $firstName, string $lastName) : string {
    return $firstName . " " . $lastName;
}
$name = fullname("Foo", "Bar");
echo $name;

// 返回多个结果
// Go
package main
import "fmt"
func swap(x, y string) (string, string) {
    return y, x
}
func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}
// PHP
// 返回一个数组以获得多个结果
function swap(string $x, string $y): array {
    return [$y, $x];
}
[$a, $b] = swap('hello', 'world');
echo $a, $b;
로그인 후 복사

控制语句

If-Else

// Go
package main
import (
    "fmt"
)
func compare(a int, b int) {
    if a > b {
        fmt.Println("a is bigger than b")
    } else {
        fmt.Println("a is NOT greater than b")
    }
}
func main() {
    compare(12, 10);
}
// PHP
function compare(int $a, int $b) {
    if ($a > $b) {
        echo "a is bigger than b";
    } else {
        echo "a is NOT greater than b";
    }
}
compare(12, 10);
로그인 후 복사

Switch

根据Golang官方教程文档:

Go的switch与C,C+,Java,JavaScript和PHP中的类似,除了Go只运行选中的case,而不是随后的所有case。 实际上, break 语句在这些语言中的每个case后都是必需的,而在Go中则是自动补充的。另一个重要的区别是Go的switch cases不需要是常量,并且涉及的值也不必是整数。

// Go
package main
import (
    "fmt"
    "runtime"
)
func main() {
    fmt.Print("Go runs on ")

    os := runtime.GOOS;

    switch os {
    case "darwin":
        fmt.Println("OS X.")
    case "linux":
        fmt.Println("Linux.")
    default:
        fmt.Printf("%s.\n", os)
    }
}
// PHP
echo "PHP runs on ";

switch (PHP_OS) {
    case "darwin":
        echo "OS X.";
        break;
    case "linux":
        echo "Linux.";
        break;
    default:
        echo PHP_OS;
}
로그인 후 복사

For 循环

// Go
package main
import "fmt"
func main() {
    sum := 0

    for i := 0; i < 10; i++ {
        sum += i
    }

    fmt.Println(sum)
}
// PHP
$sum = 0;

for ($i = 0; $i < 10; $i++) {
    $sum += $i;
}
echo $sum;
로그인 후 복사

While 循环

Go自身没有while循环的语法。相应的,Go使用 for 循环代替实现while循环.

// Go
package main
import "fmt"
func main() {
    sum := 1

    for sum < 100 {
        sum += sum
    }

    fmt.Println(sum)
}
// PHP
$sum = 1;
while ($sum < 100) {
    $sum += $sum;
}
echo $sum;
로그인 후 복사

Foreach/Range

PHP使用 foreach 迭代数组和对象。与之对应, Go使用 range

PHP 데이터 유형:

// Go
package main
import "fmt"
func main() {
    colours := []string{"Maroon", "Red", "Green", "Blue"}

    for index, colour := range colours {
        fmt.Printf("index: %d, colour: %s\n", index, colour)
    }
}
// PHP
$colours = ["Maroon", "Red", "Green", "Blue"];

foreach($colours as $index => $colour) {
    echo "index: {$index}, colour: {$colour}\n";
}
로그인 후 복사
Go 데이터 유형: 🎜rrreee🎜Variables🎜🎜Go는 var를 사용하여 전역 변수와 함수 변수를 선언합니다. 그러나 초기화 프로그램을 사용하여 단축 구문도 지원하지만 함수 내부에서만 가능합니다. 반면에 PHP는 초기화 프로그램을 사용한 변수 선언만 지원합니다. 🎜rrreee🎜유형 변환🎜rrreee🎜Arrays🎜rrreee🎜Maps🎜rrreee🎜객체 유형🎜🎜Go에서는 객체를 지원하지 않습니다. 그러나 structs를 사용하여 object와 같은 구문을 구현할 수 있습니다. 🎜rrreee🎜 함수 🎜🎜 Go와 PHP 함수의 주요 차이점은 Go 함수는 여러 결과를 반환할 수 있는 반면, PHP 함수는 하나의 결과만 반환할 수 있다는 것입니다. 그러나 PHP는 배열을 반환하여 동일한 기능을 에뮬레이트할 수 있습니다. 🎜rrreee🎜제어문🎜

If-Else

rrreee

스위치

🎜Golang 공식 튜토리얼 문서에 따르면:🎜
🎜Go의 C, C+, Java, JavaScript 및 PHP 스위치 Go와 유사하지만 Go는 모든 후속 사례가 아닌 선택한 사례만 실행합니다. 실제로 break 문은 이러한 언어의 경우 모든 경우에 필요하지만 Go에서는 자동으로 추가됩니다. 또 다른 중요한 차이점은 Go의 스위치 케이스가 상수일 필요가 없고, 관련된 값이 정수일 필요가 없다는 점입니다. 🎜
rrreee

For 루프

rrreee

While 루프

🎜Go 자체에는 while 루프 구문이 없습니다. 이에 따라 Go는 while 루프를 구현하는 대신 for 루프를 사용합니다.🎜rrreee

Foreach/Range

🎜PHP는 foreach를 사용하여 배열과 객체를 반복합니다. 이에 따라 Go는 range를 사용하여 슬라이스나 맵을 반복합니다. 🎜rrreee🎜오늘은 여기까지입니다. 나는 기사를 작고 간결하게 유지하려고 노력합니다. 저는 PHP 개발자로서 Go를 연습하면서 지식을 공유하려고 노력합니다. 여러분의 생각도 자유롭게 공유해 주세요. 이 기사를 재미있게 읽으셨기를 바랍니다. 🎜

위 내용은 Go와 PHP의 구문은 어떻게 비교되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 데이터베이스 작업 CakePHP 데이터베이스 작업 Sep 10, 2024 pm 05:25 PM

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

CakePHP 로깅 CakePHP 로깅 Sep 10, 2024 pm 05:26 PM

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

See all articles