Hello World!
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
引入模块
引入内置模块
//单个引入
import "fmt"
//引入多少个
import (
"fmt"
"os"
)
引入第三方模块
- 规则: 默认从 GOPATH 下 src 目录开始找
- import 的路径到目录终止, 不会到文件, 每个目录就是一个模块, 一般最终目录名即模块名
- 默认的模块名由 go 文件首行 package 定义, 多个 go 文件的 package 可以相同, 同一模块的 go 文件应该放置于同一个目录
- 模块可以使用别名
- 通过 govendor 可以方便进行项目迁移
import (
"github.com/wildsre/arc/arc"
arcModel "github.com/wildsre/arc/model"
"github.com/wildsre/arc/router"
)
变量初始化
基本变量初始化
var x int
var (
i int
j float64
k, z string
)
v := "test"
数组&切片初始化
初始化后, 长度和容量都相等, 数组初始化完后就已经分配所有长度的内存, 切片在使用append扩容后, cap会与len不等
arr := [3]int{1,23} //len: 3, cap: 3
s := []int{1,3} //len:2, cap:2
映射初始化
- 常规初始化
//方式1: 先声明, 后赋值, 声明后m为nil指针
var m map[string]string
m = make(map[string]string)
m["k1"] = "v1"
//方式2
m2 := map[string]string{"k1":"v1", "k2":"v2"}
- 嵌套映射初始化
m2 := map[string][]int{"k1":{1,2}, "k2":{1,1}}
m3 := map[string]map[string]string{"k1":{"k11":"v1"}}
结构体初始化
//匿名结构体
s1 := struct {
Att1 string
Att2 int
}{"a", 1}
//先定义再初始化
type Foo struct {
A1 string
A2 []int
}
//初始化需要注意, 前后括行不能为空
// Foo:{
// "a",
// []int{1,2}
// } 会报错
s2 := Foo{ "a",
[]int{1,3} }
//初始化部分变量
s3 := Foo{ A1: "s" }
控制语句
循环
for i:=0; i<2; i++ {
fmt.Println(i)
}
判断
if i<0 {
fmt.Println("one")
} else if i>=0 && i<3 {
fmt.Println("two")
} else {
fmt.Println("three")
}
有疑问加站长微信联系(非本文作者)