golang內建資料型別作為函式引數

2022-09-09 04:06:07 字數 2364 閱讀 5916

golang的所有內建型別作為函式引數傳遞都是傳值的方式(沒有傳遞引用一說),需要注意的是:陣列、slice和map作為函式引數時也是傳值,但是如果對結構內元素進行的修改,修改的是原資料。如果是對其進行整體賦值,則不會修改原資料,相當於拷貝出乙個新的臨時變數。要想無論什麼情況都修改原資料,可以通過傳遞指標引數實現。

1

package main23

import (4"

bytes"5

"fmt"6

"strings"7

)89 func f_1(a int

) 12

13 func f_1_1(a *int

) 16

17 func f_2(s string

) 20

21 func f_2_1(s *string

) 24

25 func f_3(v string

) 28

29 func f_3_1(v string

) 32

33 func f_3_2(v *string

) 36

37 func f_4(m map[int]int

) 41

42 func f_4_1(m map[int]int

) 45

46 func f_4_2(m *map[int]int

) 49

50 func f_5(b byte

) 53

54 func f_5_1(b byte

) 57

58 func f_5_2(b *byte

) 61

62 type why struct

6566 func (ss why) setv(s string

) 69

70 func (ss *why) setp(s string

) 73

74 func (ss why) string() string

7778

func main()

82 m := map[int]int

83f_1(a)

84f_2(s)

85f_3(v)

86f_4(m)

87 fmt.printf("

%d,%s,%v,%v\n

", a, s, v, m)

88f_3_1(v)

89f_4_1(m)

90 fmt.printf("

%d,%s,%v,%v\n

", a, s, v, m)

91 f_1_1(&a)

92 f_2_1(&s)

93 f_3_2(&v)

94 f_4_2(&m)

95 fmt.printf("

%d,%s,%v,%v\n

", a, s, v, m)

96 b := byte("

12145178")

97f_5(b)

98 fmt.printf("

%s\n

", b)

99f_5_1(b)

100 fmt.printf("

%s\n

", b)

101 f_5_2(&b)

102 fmt.printf("

%s\n

", b)

103 ss := &why{}

104 ss.setv(string)

105fmt.println(ss)

106 ss.setp(string)

107fmt.println(ss)

108 }

輸出如下

1

1,abc,[haha aa],map[1:3

2:23:1

] slice和map值傳遞是可以修改原資料的,但基本資料型別不行

21,abc,[haha aa],map[1:3

2:23:1

] 整體賦值不會修改原資料,值得注意的是map是無序的32

,cba,,map 傳遞指標始終會修改原資料

4 @2145178

同上5 @2145178

使用bytes.replace實際上還是賦值,所以不會修改原資料

6@2a45a78 使用指標傳參就可以了

7類的成員函式定義為傳值的方式,不會修改原資料(原資料為空)

8abc,efg 類的成員函式定義為傳指標的方式,可以修改原成員變數

910 成功: 程序退出** 0.

現在弄明白了嗎~

Golang 資料型別

注釋 行注釋 塊注釋 識別符號 除了數字開頭的不允許,符號開頭的不允許,關鍵字不允許,其他的unicode字元組合都可以。33 也可以是識別符號,我們 也可以是識別符號。識別符號也區分大小寫。以大寫字母開頭的識別符號是公開的。其他任何識別符號都是私有的。空識別符號 是乙個佔位符,用於賦值操作的時候,...

Golang資料型別

二 布林型 三 字串 數字 字串和布林型。布林型的值只可以是常量 true 或者 false。數字型別支援整型和浮點型,並且支援複數,其中位的運算採用補碼。復合資料型別包括 陣列 結構體是通過組合簡單型別,來表達更加複雜的資料結構。引用型別包括 指標 slice map channel 介面和函式型...

內建資料型別

內建 顧名思義,指內部設定,如內建型別 內建api 內建類 內建方法 等 內建資料型別 顧名思義,指內部設定的資料型別,就是某種語言內部自己定義的一些東西的型別,如 基本資料型別 引用型別 變數型別 等 性質 1 內部設定,內部定義 2 型別,分類 外接型別 與內建型別相反的是外接型別,指內外設定的...