命令
#执行运行go文件
go run hello.go
#编译成二级制文件并执行
go build hello.go & ./hello
# go获取包的命令
go get abc.com/dep
# go获取包的指定版本
go get abc.com/dep@v0.1.0
#整理依赖
go mod tidy
#固化vendor到本地目录,不依赖网络下载
go mod vendor
或者 go build -mod=vendor
基础语法
//获取包
//字符串连接用加号
fmt.Println("hello" + ",,,world")
//变量声明,中间必须空格分开
var age int = 12
//格式化字符串,%s:字符串,%d:数字
var age int = 12
var name = "zhagnsan"
var targetS = fmt.Sprintf("this is %s,his age is %d",name,age)
fmt.Println(targetS)
//多变量声明
var id1, id2 = 111, 222
//因式分解方式申明变量,适合声明全局变量
var (
name2 string
age2 int
)
//只允许在函数体内出现
name3, age3 := "zhangsan3", 23
//常量命名
const name4 string = "zhagnsan4"
//for循环
for init; condition; post { }
for condition { }
for { }
// foreach 循环,第一个数是index,第二个数是实际值
var ss = []string{"123","234","345","456"}
for a,b := range ss {
fmt.Println(a,b)
}
// 函数使用
func test01(a int,b string) string {
return b + "," + strconv.Itoa(a)
}
var a = test01(12345,"hello")
fmt.Println(a)
//初始化数组,不存在的设置默认值。后5个数值都显示0
var intArr = [10] int{1,2,3,4,5}
//不确定长度的数组,可以在[]中加上...
var intArr2 = [...]int{2,3,5,6,7}
//在数组的指定位置上设置数值
var intArr3 = [10] int {1:3,9:6,5:3}
//定义指针类型
var p = 13 //普通变量
var p1 *int //指针变量
p1 = &p //将普通变量p的内存地址复制给指针变量p1
fmt.Println(p1) //打印出p的内存地址
fmt.Println(*p1) //打印出p的内存地址上的值。 指针指向的指针变量表示当前指针变量的值
//切片
var sliceList = make([]string,20)
//在原有切面大小后面追加元素,原有切面会扩容
sliceList = append(sliceList, "zhangsan","lisi","wangwu","zhaoliu")
结构体
可以将结构体比作java类使用
// Person 人员信息
type Person struct {
name string
age int
address string
id string
remark string
}
// Employee 员工信息
type Employee struct {
person Person
salary float64
companyName string
companyAddr string
}
var p1 = Person{name: "张三",age: 24}
var e1 = Employee{companyName: "高德",companyAddr: "首开广场",person: p1}
fmt.Println(e1)
fmt.Println("公司名称:"+e1.companyName)
fmt.Println("公司地址:"+e1.companyAddr)
fmt.Println("员工名称:"+e1.person.name)
fmt.Println("员工年龄:"+ strconv.Itoa(e1.person.age))
Map
var mapKv = make(map[int]string)
mapKv[100] = "zhangsan"
mapKv[101] = "zhangsan2"
mapKv[104] = "zhangsan3"
fmt.Println(mapKv)
//通过range遍历输出
for key,value := range mapKv {
fmt.Println(fmt.Sprintf("key: %d,value:%s",key,value))
}