append
append:用来追加元素到数组、slice中
package main
import("fmt"
// "errors"
)
func main() {
//new函数
j:= new(int)
fmt.Println(j)
*j = 100
fmt.Println(*j)
//append函数
var b []int
b = append(b,10,30)
fmt.Println(b)
b = append(b,b...)
fmt.Println(b)
}
输出如下:
0xc04203a1c0
100
[10 30]
[10 30 10 30]
recover处理异常
package main
import("fmt"
"errors"
)
func main() {
//recover捕获错误
defer func(){
err:= recover()
if err!=nil{
fmt.Println(err)
}
}()
a:=0
b:=100/a
fmt.Println(b)
}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go
runtime error: integer divide by zero
PS E:\golang\go_pro\src\safly>
panic:用来做错误处理
package main
import(
// "fmt"
"errors"
)
func main() {
//panic:用来做错误处理
err:= initError()
if err != nil{
panic(err)
}
}
func initError()error{
return errors.New("init error")
}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go
panic: init error
goroutine 1 [running]:
main.main()
E:/golang/go_pro/src/safly/demo.go:14 +0x8b
exit status 2
PS E:\golang\go_pro\src\safly>
new_make
new:用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
make:用来分配内存,主要用来分配引用类型,比如chan、map、slice
package main
import(
"fmt"
)
func main() {
//返回一个slice
s2 := make([]int,10)
fmt.Println(s2)
s2[0] = 10
fmt.Println(s2)
//返回一个地址
s1 :=new([]int)
fmt.Println(s1)
*s1 = make([]int,5)
(*s1)[0] = 10
fmt.Println(s1)
fmt.Println(*s1)
}
输出如下:
PS E:\golang\go_pro\src\safly> go run demo.go
[0 0 0 0 0 0 0 0 0 0]
[10 0 0 0 0 0 0 0 0 0]
&[]
&[10 0 0 0 0]
[10 0 0 0 0]
PS E:\golang\go_pro\src\safly>
闭包
闭包:一个函数和与其相关的引用环境组合而成的实体
package main
import(
"fmt"
)
func main() {
//闭包函数
method := closure()
fmt.Println(method(1,3))
//匿名函数1
sum:= func(a int,b int) int {
return a + b
}(2,3)
fmt.Println(sum)
//匿名函数2
sum1:= func(a,b int)(sum int){
sum = a+ b
return
}
fmt.Println(sum1(1,3))
fmt.Println(returnMethod1(2,4))
fmt.Println(returnMethod2(2,4))
}
//利用方法返回匿名函数
func returnMethod1(a,b int)int{
return func(int,int)int{
return a + b
}(a,b)
}
//利用方法返回匿名函数运算结果
func returnMethod2(a,b int)int{
resutlTemp:= func(int,int)int {
return a+b
}
return resutlTemp(a,b)
}
//无参数闭包
func closure( ) func(int,int ) int {
return func(a int,b int )int {
return a + b
}
}
输出如下:
4 5 4 6 6