Go的几个特点
- 可编译为二进制
- 存在指针
- 不使用分号,但单行多语句可以使用分号
- 空叫做nill
HelloWorld
[code]package main //必须有main包,包名与文件夹名和文件名没关系,但同文件夹下多个文件必须包名一致
import “fmt” //导入包
//入口函数
func main() {
fmt.Println(“hello world”)
}
[/code]
导入包
导入多个包的语法
下划线代表初始化该包(执行init函数),但不导入他
[code]import (
“database/sql”
“fmt”
_ “github.com/lib/pq”
)
[/code]
常见包
fmt:格式化输出
os:环境、文件操作
iouitil:封装好的文件操作,读写文件、文件夹、临时文件夹
变量声明
[code]var a int //类型在后面
var a int = 200 //声明并初始化
var a, b = 1 //多变量声明并初始化
a := 1 //声明并初始化,冒号不可多次使用
[/code]
函数、分支、循环
a和b都是int,返回int
[code]func test( a, b int) int {
}
[/code]
if后表达式可不跟圆括号
[code]if exp {
} else {
}
[/code]
for后表达式可不跟圆括号
[code]for true {
}
[/code]
结构
new会分配内存并置0,然后返回内存指针
make用于golang内置结构的内存分配,返回对象本身
他们都是函数,需要加括号和参数调用
map是一个无序键值对,可以自定义key和val的类型
[code]var map1 = map(map[key_type]val_type)[/code]
interface{},一个空interface类型可以当作object类型,他接受任何类型的实现
[code]func (param interface{}) {
}
[/code]
JSON序列化/反序列化
读文件
读命令行参数
异常处理
异常类型是error
很常见的异常处理写法是这样的,err放在返回参数最后
[code]func getSomething() (interface{}, error){
//新建异常并返回
err := errors.New(“an error”)
return nil,err
//正常返回
return obj, nil
}
obj, err := getSomething()
if err !=nil {
//异常处理
}[/code]