golang 笔记2 Go 与 Java 语法上的区别
区别
- 结尾无需使用 ;
strValue := "hello world"
fmt.Println(strValue)
- 定义的局部变量必须使用
仅声明一个局部变量却不使用,无法通过编译
func fun1() {
str := "你好"
// 编译报错
}
- 变量类型在变量名后面
var strValue string = "hello world"
- 函数返回值在函数名后面
func hello(name string) string {
return "hello" + name
}
- 多返回值
// 函数可以返回任意数量的返回值
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
- if 判断无需括号
if count >= 60 {
fmt.Println("已及格")
}
- 支持闭包
// closure_test.go
package closure
import (
"fmt"
"testing"
)
func TestClosure(t *testing.T) {
addFunc, subFunc := addOrSubN(10)
fmt.Printf("%d\n", addFunc(30))
fmt.Printf("%d\n", subFunc(30))
}
func addOrSubN(n int) (func(y int) int, func(y int) int) {
addFunc := func(x int) int {
return x + n
}
subFunc := func(x int) int {
return x - n
}
return addFunc, subFunc
}
- 未完待续