GO语言练习:不定参数函数

1、代码

2、运行



1、代码

package main
import "fmt"

func MyPrintf(args ...interface{}){
    for _, arg := range args {
        switch arg.(type) {
        case int :
            fmt.Println("\"", arg, "\"", "is an int value.")
        case string :
            fmt.Println("\"", arg, "\"", "is a string value.")
        case int64 :
            fmt.Println("\"", arg, "\"", "is an int64 value.")
            default :
            fmt.Println("\"", arg, "\"", "is an unknown type.")
        }
    }
}

func main(){
    var v1 int = 1
    var v2 int64 = 234
    var v3 string = "hello"
    var v4 float32 = 1.123
    MyPrintf(v1, v2, v3, v4)
}

2、运行

$ go run myprintf.go
" 1 " is an int value.
" 234 " is an int64 value.
" hello " is a string value.
" 1.123 " is an unknown type.
时间: 2024-11-07 01:52:57

GO语言练习:不定参数函数的相关文章

c++不定参数函数

不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多.除了格式化输出之外,我实在没看到多少应用.主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它.尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题. 原理 刚学C语言的时候,一般人都会首先接触printf函数.通过这个函数,你可以打印不定个数的变量到屏幕,如: printf("%d", 3);printf("%d,%d",3,4)

c语言之可变参数函数

stdarg.h stdarg.h是C标准函数库的头文件,主要目的是为让函数能够接收不定参数.当需要定义可变参数函数时,需要包含该头文件. 先从一个例子说起,这个例子想法来自<<head first c>> #include <stdio.h> #include <stdarg.h> enum drink{apple = 3,banana = 4,orange = 5,other = 6}; int count(int n,...) { int total

C语言中可变参数函数实现原理

C函数调用的栈结构 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈.例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x2000-->a 0x2004-->b 0x2008-->c 对于在32位系统的多数编译器,每个栈单元的大小都是sizeof(int), 而函数的每个参数都至少要占一个栈单

oc自定义不定参数函数

-(void)getValueFormConfig:(NSString *)key,... or -(void)getValueFormConfig:(NSString *)key,...NS_REQUIRES_NIL_TERMINATION; -(void)getValueFormConfig:(NSString *)key,...{ NSMutableArray* keys = [NSMutableArray array]; va_list argList; if(key){ [keys a

C语言不定参数

最近,遇到一个c语言的不定参数问题.其实,对于c语言的不定参数问题,只需要三个函数就可以搞定了.这三个函数的头文件是<stdarg.h>,其实下面的三个函数都是一个宏定义(macro).    这三个函数是:    void va_start(va_list ap, last);    type va_arg(va_list ap, type);    void va_end(va_list ap);    如果需要进行其他的一些操作,可以查看一下man手册进行查询.    在这三个函数解释之

C语言可变参数函数实现原理

一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本文地址:http://www.cnblogs.com/archimedes/p/variable-parameter.html,转载请注明源地址. 例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x200

c语言可变参数函数

c语言支持可变参数函数.这里的可变指,函数的参数个数可变. 其原理是,一般情况下,函数参数传递时,其压栈顺序是从右向左,栈在虚拟内存中的增长方向是从上往下.所以,对于一个函数调用 func(int a, int b, int c); 如果知道了参数a的地址,那么,可以推导出b,c的地址 #include <stdio.h> void test(int a, int b, int c) { printf("%p, %p, %p\n", &a, &b, &

不定参数的应用

不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多.除了格式化输出之外,我实在没看到多少应用.主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它.尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题.原理:刚学C语言的时候,一般人都会首先接触printf函数.通过这个函数,你可以打印不定个数的变量到屏幕,如:printf("%d", 3);printf("%d,%d",3,4);

Golang的不定参数

在很多语言中都提供了不定参数和函数重载以及函数式语言中得闭包来提高函数的灵活性.如果使用过fmt包里的函数,那么你就已经接触到了Golang的不定参数了.那么如何定义一个自己的不定参数的函数呢? 一.函数定义 首先来看如何定义一个不定参数的函数: func YourFun(v... interface{}){ } 该函数定义,定义了一个接受任何数目任何类型参数的函数.这里特殊的语法是三个点"...",在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golan