加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 与 Go 的语法差异

发布时间:2022-07-29 14:35:43 所属栏目:PHP教程 来源:互联网
导读:Go 是由 Google 设计的一门静态类型的编译型语言。它有点类似于 C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是 GoLang 的最佳卖点之一。此外,Go 速度快,表现力强,干净且
  Go 是由 Google 设计的一门静态类型的编译型语言。它有点类似于 C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是 GoLang 的最佳卖点之一。此外,Go 速度快,表现力强,干净且高效。这也是 Go 如此吸引开发者学习的原因。
 
  数据类型
 
  Go 同时支持有符号和无符号整数,而 PHP 只支持有符号整数。
 
  另一个主要区别是数组。Go 对 array 和 map 有单独的类型,而 PHP 数组实际上是有序的 map。
 
  Go 与 PHP 相比没有对象。但是,Go 有一个类似于 object 的 struct 类型。
 
  PHP 数据类型:
 
  Go 数据类型:
 
  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
 
  类型转换
 
 
  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"
 
  数组
 
 
  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 之类的语法。
 
 
  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
 
  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
 
  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 不需要是常量,并且涉及的值也不必是整数。

(编辑:应用网_丽江站长网)

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

    热点阅读