• 65_Go基础_1_32 函数变量


     1 package main
     2 
     3 import "fmt"
     4 
     5 func main() {
     6     /*
     7         Go语言的数据类型:
     8 
     9             数值类型:整数,浮点
    10                 进行运算操作,加减乘除,打印
    11             字符串:
    12                 可以获取单个字符,截取子串,遍历,strings包下的函数操作。。
    13             数组,切片,map。。
    14                 存储数据,修改数据,获取数据,遍历数据。。。
    15             函数:
    16                 加(),进行调用
    17 
    18             注意点:
    19                 函数作为一种复合数据类型,可以看做是一种特殊的变量。
    20                     函数名():将函数进行调用,函数中的代码会全部执行,然后将return的结果返回给调用处
    21                     函数名:指向函数体的内存地址
    22 
    23     */
    24 
    25     // 1.整型
    26     a := 10
    27     //运算:
    28     a += 5
    29     fmt.Println("a:", a)
    30 
    31     // 2.数组,切片,map。。容器
    32     b := [4]int{1, 2, 3, 4}
    33     b[0] = 100
    34     for i := 0; i < len(b); i++ {
    35         fmt.Printf("%d\t", b[i])
    36     }
    37     fmt.Println()
    38 
    39     // 3.函数做一个变量
    40     fmt.Printf("%T\n", fun1) // func(int, int)
    41     fmt.Println(fun1)        // fun1  0x31e1c0,看做函数名对应的函数体的地址
    42 
    43     // 4.直接定义一个函数类型的变量
    44     var c func(int, int)
    45     fmt.Println(c) // <nil> 空
    46 
    47     // var d  string
    48     // d = "hello"
    49     c = fun1       // 将fun1的值(函数体的地址)赋值给c
    50     fmt.Println(c) // 0x31e1c0
    51 
    52     fun1(10, 20) // a:10,b:20
    53     c(100, 200)  // c也是函数类型的,加小括号也可以被调用  a:100,b:200
    54 
    55     res1 := fun2       // 将fun2的值(函数的地址)赋值给res1,res1和fun2指向同一个函数体
    56     res2 := fun2(1, 2) // 将fun2函数进行调用,将函数的执行结果赋值给res2,相当于:a+b
    57     fmt.Println(res1)  // 0x31e1a0
    58     fmt.Println(res2)  // 3
    59 
    60     fmt.Println(res1(10, 20)) // 也可以被调用 30
    61     // res2() //cannot call non-function res2 (type int)
    62 }
    63 func fun2(a, b int) int {
    64     return a + b
    65 }
    66 func fun1(a, b int) {
    67     fmt.Printf("a:%d,b:%d\n", a, b)
    68 }
  • 相关阅读:
    扩展欧几里得算法
    poj-3094-quicksum
    (floyd)佛洛伊德算法
    poj-3660-cows contest(不懂待定)
    poj-1056-IMMEDIATE DECODABILITY(字典)
    delete与delete[]的区别
    poj-1046-color me less
    SqlParameter 使用
    VS2010中出现无法嵌入互操作类型(转)
    fastreport代码转
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15629779.html
Copyright © 2020-2023  润新知