Go与Java(5) Go和Java微观对比-4

179 阅读3分钟

12.Go与Java程序文件的后缀名对比

Java的编译文件是.class结尾,多个.class打成的一个可执行文件是.jar结尾,.jar不能直接在windows和linux上执行,得用java命令在JVM中执行。

Go语言的程序文件后缀为.go,有main包main函数的,.go文件打包成二进制对应操作系统的可执行程序,如windows上的.exe结尾的可执行程序。

Java的类库会以.jar结尾,Go语言非main包没有main函数的程序编译打包会打成一个类库,以.a结尾,也就是说Go语言的类库以.a结尾。

Go的类库如下:

包名.a

my_util.a

注:my_util是最顶层文件夹名,里面包含着一个个程序文件。

 

13.Go与Java选择结构的对比

1).if

Go中的if和Java中的if使用相同,只不过是把小括号给去掉了。

  示例1:

package main


import (
   "fmt"
)
func main() {
   /*
      单分支结构语法格式如下:
         if 条件判断 {
            //代码块
         }
   */


   var num int


   fmt.Printf("请输入数字")
   fmt.Scan(&num)


   if num > 10 {
      fmt.Println("您输入的数字大于10")
   }
}

 

示例2:

 

package main


import (
   "fmt"
)
func main() {
   /*
      if else分支结构语法格式如下:
         if 条件判断 {
            //代码块
         } else {
            //代码快2
         }
   */


   var num int


   fmt.Printf("请输入数字")
   fmt.Scan(&num)


   if num > 10 {
      fmt.Println("您输入的数字大于10")
   } else {
      fmt.Println("您输入的数字不大于10")
   }
}

 

示例3:

 

package main


import (
   "fmt"
)
func main() {
   /*
      if else分支结构语法格式如下:
         if 条件判断 {
            //代码块
         } else if 条件判断{
            //代码块2
         } else {
            //代码块3
         }
   */


   var num int


   fmt.Printf("请输入数字")
   fmt.Scan(&num)


   if num > 10 {
      fmt.Println("您输入的数字大于10")
   } else if num == 10{
      fmt.Println("您输入的数字等于10")
   } else {
      fmt.Println("您输入的数字小于10")
   }
}

 

2).switch

 

示例1:

 

package main


import (
   "fmt"
)
func main() {
   var a = "li_ming"
   switch a {
   case "li_ming":
      fmt.Println("Hello!LiMing")
   case "xiao_hong":
      fmt.Println("Hello!XiaoHong")
   default:
      fmt.Println("No!")
   }
}

 

示例2:一分支多值

 

package main


import (
   "fmt"
)
func main() {
	
   var name = "li_ming"
   var name2 = "xiao_hong"
   switch name {
   //li_ming或xiao_hong 均进入此
   case "li_ming", "xiao_hong":
      fmt.Println("li_ming and xiao_hong")
   }


   switch name2 {
   case "li_ming", "xiao_hong":
      fmt.Println("li_ming and xiao_hong")
   }
}g

 

示例3:switch表达式

 

package main


import (
   "fmt"
)
func main() {
   var num int = 11
   switch{
      case num > 10 && num < 20:
         fmt.Println(num)
   }
}

 

示例4:fallthrough下面的case全部执行

 

package main


import (
   "fmt"
)
func main() {
   var num = 11
   switch {
   case num == 11:
      fmt.Println("==11")
      fallthrough
   case num < 10:
      fmt.Println("<12")
   }
}

 

14.Go与Java循环结构的对比

 

1).for循环

 

示例1:省略小括号

 

package main


import (
"fmt"
)


func main() {
   for i := 1; i < 10; i++ {
      fmt.Println(i)
   }
}

 

示例2:和while相同,break,continue同java

 

package main


import (
   "fmt"
)


func main() {
   i := 0
   //省略另外两项,相当于java中的while
   for i < 3 {
      i++
   }
   //break用法相同
   for i == 3 {
      fmt.Println(i)
      break
   }
}

 

示例3:死循环,三项均省略

 

package main


func main() {
   for {


   }


   for true {


   }


}

 

示例4:嵌套循环和java也一样,不演示了

 

示例5: range循环

 

package main


import "fmt"


func main() {
   var data [10]int = [10]int{1,2,3,4,5,6,7,8,9,10}
   for  i, num := range data {
      fmt.Println(i,num)
   }
}

 

2).goto

 

package main


import "fmt"


func main() {


   //goto可以用在任何地方,但是不能跨函数使用
   fmt.Println("start")


   //go to的作用是跳转,中间的语句不执行,无条件跳转
   goto my_location //goto是关键字, my_location可以自定义,他叫标签


   fmt.Println("over")
   my_location:
   fmt.Println("location")