加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Go与PHP的语法是怎样对比

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

 
  根据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 迭代 slice 或 map。
 
  // Go
  
  package main
  
  import "fmt"
  
  func main() {
  
      colours := []string{"Maroon", "Red", "Green", "Blue"}
  
      for index, colour := range colours {
  
          fmt.Printf("index: %d, colour: %sn", index, colour)
  
      }
  
  }
  
  // PHP
  
  $colours = ["Maroon", "Red", "Green", "Blue"];

  foreach($colours as $index => $colour) {
  
      echo "index: {$index}, colour: {$colour}n";
  
  }。
 

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读