GO基础之函数

一、Go语言函数的格式

函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块。

// 没有返回值的函数
func log(message string) {
}

// 有一个返回值的函数
func add(a , b int) int {
    return var1
}
// 有多个返回值的函数
func power(name string) (int, bool) {
    return  var1,var2
}

// 给返回值 命名
func add(a, b int) (c int) {
    c = a + b
    return c
}

多返回值函数的使用

func main() {
    a := 0
    b := 0
    a, b = addAndMultiply(10, 20)
    fmt.Println("a=", a)
    fmt.Println("b=", b)
}
func addAndMultiply(a, b int) (int, int) {
    return a + b, a * b
}

二、函数作为参数

package main

import "fmt"
import "strings"

func main() {
    str := strToCase("ABDCFSDFE", processLetter)
    fmt.Println(str)
}

//将函数作为参数
func strToCase(str string, myfunc func(string) string) string {
    return myfunc(str)
}

//字符串奇偶交替
func processLetter(str string) (result string) {
    for i, value := range str {
        if i%2 == 0 {
            result += strings.ToUpper(string(value))
        } else {
            result += strings.ToLower(string(value))
        }
    }
    return result
}

使用 type自定义类型 

package main

import "fmt"
import "strings"

func main() {
    str := strToCase("ABDCFSDFE", processLetter)
    fmt.Println(str)
}

//将函数作为参数(使用type定义的参数类型)
func strToCase(str string, myfunc processLetterFunc) string {
    return myfunc(str)
}

//使用type 为processLetter() 函数定义类型
type processLetterFunc func(string) string

//字符串奇偶交替
func processLetter(str string) (result string) {
    for i, value := range str {
        if i%2 == 0 {
            result += strings.ToUpper(string(value))
        } else {
            result += strings.ToLower(string(value))
        }
    }
    return result
}

二、变量的作用域

1、局部变量与全局变量同名时,局部变量优先

//全局变量
var num int = 100
var num2 int = 200

func main() {
    num, num2 := 1, 2
    fmt.Println("num=", num)  // num=1
    fmt.Println("num2=", num2)// num2=2
}

猜你喜欢

转载自www.cnblogs.com/jalja/p/11768868.html
今日推荐