加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Go与PHP的语法是怎么对比

发布时间:2022-07-07 15:31:18 所属栏目:PHP教程 来源:互联网
导读:Go是由Google设计的一门静态类型的编译型语言。它有点类似于C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是GoLang的最佳卖点之一。此外,Go速度快,表现力强,干净且高效。这
Go是由Google设计的一门静态类型的编译型语言。它有点类似于C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是GoLang的最佳卖点之一。此外,Go速度快,表现力强,干净且高效。这也是Go如此吸引开发者学习的原因。
 
PHP是一种动态类型语言,它使新手更容易编写代码。现在的问题是,PHP开发人员能否从动态类型语言切换到像Go这样的静态类型语言?为了找到答案,让我们对比一下Go和PHP之间的语法差异。
 
数据类型
 
Go同时支持有符号和无符号整数,而PHP只支持有符号整数。
 
另一个主要区别是数组。Go对array和map有单独的类型,而PHP数组实际上是有序的map。
 
Go与PHP相比没有对象。但是,Go有一个类似于object的struct类型。
 
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
 
}
 
 $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;
 
  
    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")
 
    }
 
  
    }
 
}
 
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 ")
 
 
 
     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;
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读