概述
Package 和 Main 函数
Java 定义 package:
package org.smark.text
Go 定义 package:
package text
引入 package
import (
"fmt"
"org/smark/text"
)
在引入 package 的时候 Golang 中直接引入path package ,如上述示例,在使用时我们只需要用 `text` 作为访问器即可。
main 函数
Golang 和 Java 一样都是以 `main` 函数作为程序入口,不同的是 Golang 中 main 函数必须声明在 main package 下。
package main
func main(){}
Golang 会在 main package 下查找 main 函数。
变量和常量
Java 定义变量和常量:
public static final double PI = 3.14;
int i;
String name;
String email = "xx@yyy.com";
Golang 定义变量和常量:
const(
PI := 3.14
)
var i int
var name string
email := "xx@yyy.com" //自动推倒类型
控制语句
简单的 if 语句:
if x > 0 {
return y
}
带初始化语句的 if:
if err := file.Chmod(0664); err != nil { //引用自官方文档
log.Print(err)
return err
}
for 语句的形式:
// 如同C的for循环 //引用自官方文档
for init; condition; post { }
// 如同C的while循环
for condition { }
// 如同C的for(;;)循环
for { }
switch 的灵活性让我们可以避免写 if-else-if-else 这样的语句:
func unhex(c byte) byte { //引用自官网文档
switch {
case '0' <= c && c <= '9':
return c - '0'
case 'a' <= c && c <= 'f':
return c - 'a' + 10
case 'A' <= c && c <= 'F':
return c - 'A' + 10
}
return 0
}
Golang 中的 case 更灵活,在Java 中直到 Java 7 中 case 语句才可以使用 String 类型。
函数
Golang 函数定义:
func (file *File) Write(b []byte) (n int, err error) //func (接收者定义) 函数名(参数定义) (返回值定义)
在C 语言中返回局部变量的指针时,在使用时会有问题,Golang 函数中返回局部变量的指针是可以的。
Golang 通过关键字 `new` 和 `make` 来初始化变量和内容,`make` 只用于初始化切片(slice)、映射(map) 和 通道(channel),
···