一、变量
1、定义变量
var 变量名字 类型 = 表达式
空标志服: _
var a int //默认初始化值为0
var x int = 10
var y = false //布尔型
var (
x, y int
a, s = 100, "abc"
)
//简短模式定义变量
x := 100
a, s : = 100, "abc"
2、定义常量
const 名字 [类型] = 值
const A = "abc"
//特殊常量值iota
const (
A = iota
B = iota
C = iota
)
二、循环
for i := 0; i < 10; i++ {
fmt.Println(i)
}
//简短模式
x := 10
for x > 2 {
x--
fmt.Println(x)
}
i := 0
for {
i++
if i > 9 {
break
}
fmt.Println(i)
}
//方式二
for index, value := range arry {
fmt.Println(index,value)
}
lesson := [8] int{50, 80, 78, 36, 70, 85, 90, 87}
for i, v := range lesson {
fmt.Println(i, v)
}
三、切片
//数组定义
var 名字 [长度(或...代替)] 类型 {}
//切片定义
var 名字 [] 类型 {}
var s [] int
var s = [] int{1, 2, 3, 4, 5, 6}
s := [] int{1, 2, 3, 4, 5, 6}
//数组做切片
arr := [...] int{1, 2, 3, 4}
sl := arr[0:2] //在数组arr中从第0个开始取两个值做切片
//切片改变
s := [] int{1, 2, 3, 4, 5, 6}
s[0] = 10 //改变值
//简短模式
s := []{1:20} //第二项值改变为20
//添加
s := append(s, 15)
四、函数
//定义
func name (arg) {
do things
}
//传参
func score(x int) {
fmt.Println(x)
}
func main(){
socre(50)
}
//返回值
func name (arg) rType{
do things
return result
}
func (a, b int) int {
return a+b
}
//多个返回值
func (a, b int) (c int, d int ) {
c = a
d = b
return c , d
}
//返回错误
func (x, y int) (int, error) {
if y == 0 {
return 0, errors.New("y值不能为0")
}
return x / y, nil
}
//求和
func getAvg(s []int) int {
sum := 0
for i := 0; i < len(s); i++ {
sum += s[i]
}
return sum / len(s)
}
//匿名函数
func main() {
func(s) {
println(s)
}("hello world")
}
func main() {
add := func(x, y int){
reyurn x + y
}
println(add(1,2))
}
五、基础包
import (
"fmt"
"os" //接收命令行传入的参数
"reflect" // 转换类型
)
func main() {
osArgs := os.Args[1:]
var s []int
item, _ = strconv.Atoi(osArgs)
s = append(s, item)
}