函数
定义格式:
func name([parameter list])([return_type]){
函数体
}
如:
strconv是一个库,提供类型转换的功能,其中itoa是整数转换成字符串
特殊之处:
函数返回多个值
注意fmt.Sprintf返回的是一个字符串,不是直接输出
和java不一样和c语言一样,向上面这样传参属于值传递,可以使用指针变成引用传递
package main
import "fmt"
func main() {
var a int = 100
var b int = 200
fmt.Println("交换前a的值:",a)
fmt.Println("交换前a的值:",b)
swap(&a,&b)
fmt.Println("交换后a的值:",a)
fmt.Println("交换后a的值:",b)
}
func swap (a,b *int){
var t int = *a
*a = *b
*b = t
}
函数作为参数
就是函数本身作为变量
例如上面的代码可以写成:
package main
import "fmt"
func main() {
var a int = 100
var b int = 200
swp := func (a,b *int){
var t int = *a
*a = *b
*b = t
}
fmt.Println("交换前a的值:",a)
fmt.Println("交换前a的值:",b)
swp(&a,&b)
fmt.Println("交换后a的值:",a)
fmt.Println("交换后a的值:",b)
}
其实func swap (a,b *int)的swap也是函数变量,所以这样也对
package main
import "fmt"
func main() {
var a int = 100
var b int = 200
swp := swap
fmt.Println("交换前a的值:",a)
fmt.Println("交换前a的值:",b)
swp(&a,&b)
fmt.Println("交换后a的值:",a)
fmt.Println("交换后a的值:",b)
}
func swap (a,b *int){
var t int = *a
*a = *b
*b = t
}
参数作用域
c一样
闭包
函数体里的函数:内联函数。优点是可以直接用变量,不用声明
函数方法
先学完结构体再学方法
就是函数可以放到结构体里面
结构体
结构体定义:
type name struct{
…
}
结构体指针
如:
var name *Books
其他操作很简单