go語言學習之可變引數函式
阿新 • • 發佈:2018-11-14
1 // 遍歷可變引數列表——獲取每一個引數的值
2 package main
3
4 import(
5 "fmt"
6 "bytes"
7 )
8
9 func joinString(stringList ...string) string{
10 var buffer bytes.Buffer
11 for _, s:= range stringList{
12 buffer.WriteString(s)
13 }
14 return buffer.String();
15 }
16
17 //func main(){
18 // str := joinString("hello!", "go", "語言")
19 // fmt.Println(str)
20 //}
21
22 // 獲得可變引數型別——獲得每一個引數的型別
23 //package main
24 //import(
25 // "bytes"
26 // "fmt"
27 //)
28 //
29 func printTypeValue(sList ... interface{}) string {
30 fmt.Println(sList)
31 var buffer bytes.Buffer
32 var strType string
33 for _, s := range sList {
34 str := fmt.Sprintf("%v", s)
35 switch s.(type){
36 case bool:
37 strType = "bool"
38 case int:
39 strType = "int"
40 case string:
41 strType = " stringg"
42 }
43
44 buffer.WriteString("value:")
45 buffer.WriteString(str)
46 buffer.WriteString("\ts")
47 buffer.WriteString("type:")
48 buffer.WriteString(strType)
49 buffer.WriteString("\n")
50
51 }
52 return buffer.String()
53 }
54
55 //func main(){
56 // fmt.Println(printTypeValue("I", true, 520))
57 //}
58
59 // 在多個可變引數函式中傳遞引數
60 //package main
61 //import "fmt"
62
63 func doPrint(sList ...interface{}){
64 for _, a := range sList {
65 fmt.Println(a)
66
67 }
68 }
69
70 func rawPrint(sList ... interface{}){
71 doPrint(sList)
72
73 }
74 func main(){
75 // 遍歷可變引數列表——獲取每一個引數的值
76 str := joinString("hello!", "go", "語言")
77 // 獲得可變引數型別——獲得每一個引數的型別
78 fmt.Println(str)
79 fmt.Println(printTypeValue("I", true, 520))
80 // 在多個可變引數函式中傳遞引數
81 rawPrint("哈哈,在多個可變引數函式中傳遞引數")
82 }