🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
内置函数 1. close:主要用来关闭channel 2. len:用来求长度,比如string、array、slice、map、channel 3. new:用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针 4. make:用来分配内存,主要用来分配引用类型,比如chan、map、slice 5. append:用来追加元素到数组、slice中 6. panic和recover:用来做错误处理 7. new和make的区别 ![](https://box.kancloud.cn/704a004b94865ecabd1b8cac989ec410_528x317.png) new 可以给任何类型变量分配内存,但不会给大小, make会分配容量,长度。 func test5(){ var a []int a = make([]int,10) a[0] = 100 fmt.Println(a) var b *[]int b = new([]int) (*b) = make([]int,10) (*b)[0] = 100 fmt.Println(b) //2 b = &a (*b)[0] = 1000 fmt.Println(a) } 详细请参考: http://www.cnblogs.com/junneyang/p/6070238.html 函数 1. 声明语法:func 函数名 (参数列列表) [(返回值列列表)] {} 2. 错误的写法 func add() { } 3、golang函数特点: a. 不不⽀支持重载,⼀一个包不不能有两个名字⼀一样的函数 b. 函数是⼀一等公⺠民,函数也是⼀一种类型,⼀一个函数可以赋值给变量量 c. 匿匿名函数 d. 多返回值 ~~~ package main import "fmt" func add(a, b int) int { return a + b } func main() { //函数是⼀一等公⺠民,也可以和变量量⼀一样进 ⾏行行赋值 c := add fmt.Printf("%p %T %p %T\n", c, add, c, add) sum := c(10, 20) fmt.Println(sum) sum = add(10, 20) fmt.Println(sum) } ~~~ ~~~ package main import "fmt" type add_func func(int, int) int func add(a, b int) int { return a + b } func operator(op add_func, a int, b int) int { //使⽤用传进来的函数,进⾏行行操作 return op(a, b) } func main() { c := add fmt.Println(c) sum := operator(c, 100, 200) fmt.Println(sum) } ~~~ ~~~ package main import "fmt" type add_func func(int, int) int func add(a, b, c int) int { return a + b+c } func operator(op add_func, a int, b int) int { return op(a, b) } func main() { c := add fmt.Println(c) sum := operator(c, 100, 200) fmt.Println(sum) } ~~~ ~~~ package main import "fmt" type add_func func(int, int) int func sub(a, b int) int { return a - b } func operator(op add_func, a int, b int) int { return op(a, b) } func main() { c := sub fmt.Println(c) sum := operator(c, 100, 200) fmt.Println(sum) } ~~~