课程网站建设的财务分析,上海第五届中国国际进口博览会地址,知名的深圳小程序开发公司,答题卡在线制作网站函数在任何语言中并不难理解#xff0c;但是不论是有几年开发经验的人#xff0c;真正想要写好一个函数并不是那么容易的
1、go语言中函数结构
func main() {fmt.Println(isEven(2))
}
func isEven(x int) bool {return x%2 0
}#xff08;这里我写了一个简单的判断是否是…函数在任何语言中并不难理解但是不论是有几年开发经验的人真正想要写好一个函数并不是那么容易的
1、go语言中函数结构
func main() {fmt.Println(isEven(2))
}
func isEven(x int) bool {return x%2 0
}这里我写了一个简单的判断是否是偶数的函数 在go函数中func是关键字代表这是一个函数isEven是自定义方法名x int 是入参bool是方法返回对于java开发人员来说需要一定的时间去适应这种写法
2、函数中返回多个值
func moreReturn() (int, string) {i : 2s : testreturn i, s
}在上述案例中按go的函数返回值写法将多个返回值如int与string包在括号中
2.1、将函数中返回值赋值给函数调用者
func main() {a, b : moreReturn()fmt.Println(a, b)
}func moreReturn() (int, string) {i : 2s : testreturn i, s
}3、函数中的参数 **在go语言中可以选择定义或不定义参数定义一个或者多个参数 但是有一种情况当我们自己也不知道入参多少的时候怎么办
func main() {fmt.Println(add(1, 2, 3, 4, 5))
}func add(numbers ...int) int {total : 0for _, num : range numbers {total num}return total
}在函数的入参中添加numbers …[类型] 即可在调用方法入参数中每个值用,号进行分割。在java中也有类似的写法只是在go语言中参数类型顺序颠倒了而已
4、具名返回值 这个非常有意思至少是在java语言中没有的一种写法 首先什么叫做具名这个词不常见指的是
具名是指在文件、文本上签署姓名通常涉及双方共同签署的情况。
这个词汇在法律、文件处理等领域中经常出现用于确保文件的合法性和有效性。那么具名返回值中的返回值具名签署就在函数的返回值中 例如
func ret() (a, b string) {a testb test1return
}我们可以看到在上述的返回值中定义了a和b两个返回值名称当函数中给a与b赋值后直接可以进行return关键字返回即可若调用方法可以发现会按ab的具名顺序进行返回。
5、递归函数
func forEach(a, b int) int {a bif a 5 {fmt.Println(a)return a}fmt.Println(a)return forEach(a, b)
}
#结果
2
3
4
5
6
6
这种写法在java中也可以完成
public static int forEach(int a, int b) {a b;if (a 5) {System.out.println(a);return a;}System.out.println(a);return forEach(a, b);}#结果234566、将函数作为值传递 6.1 将函数赋值给变量
func main() {fn : func() {fmt.Println(将函数做为值传递)}fn()
}6.2 将函数作为参数传递
func main() {fn : func() string {return 将函数作为参数}//这里的fn变量需要注意这里拿到的不是方法的返回值而是把方法赋给了fnfmt.Println(otherFunc(fn))
}func otherFunc(f func() string) string {return f()
}这里otherFunc函数中f是变量名func()代表这个参数是方法 string是这个方法的返回值括号外面的string是otherFunc的返回值