-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinner_type.go
More file actions
210 lines (164 loc) · 3.59 KB
/
inner_type.go
File metadata and controls
210 lines (164 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
package main
import (
"fmt"
)
/**
complex使用场景?
*/
/*
值类型:
bool
int(32 or 64), int8, int16, int32, int64
uint(32 or 64), uint8(byte), uint16, uint32, uint64
float32, float64
string
complex64, complex128
array -- 固定长度的数组
*/
/**
引用类型
slice -- 序列数组(最常用)
map -- 映射
chan -- 管道
*/
func innerType() {
fmt.Println("=====内置类型=====")
//bool
var flagApp = false
flag := true
fmt.Println(flag)
fmt.Println(flagApp)
//int
var a = 42 // utils := 42
fmt.Println(a)
//int8 表示范围: -128 ~ 127
var int8 int8 = -127
fmt.Println(int8)
//int16
var int16 int16 = -32768
fmt.Println(int16)
//int32
var int32 int32 = -2147483648
fmt.Println(int32)
//int64
var int64 int64 = -9223372036854775808
fmt.Println(int64)
//uint无符号整数
var uint uint = uint(32767)
fmt.Println(uint)
//uint 等同于byte
var _int8 uint8 = uint8(32)
fmt.Println(_int8)
//uint16
var uint16 uint16 = 32767
fmt.Println(uint16)
//uint32
var uint32 uint32 = 32767
fmt.Println(uint32)
//uint64
var uint64 uint64 = 9223372036854775807
fmt.Println(uint64)
//float32
var float32 float32 = 3.1415926
fmt.Println(float32)
//float64
var float64 float64 = 3.1415926
fmt.Println(float64)
//string
var str = "hello world"
fmt.Println(str)
//complex64
var complex64 complex64 = 1 + 2i
fmt.Println(imag(complex64))
//complex128
var complex128 complex128 = 1 + 2i
fmt.Println(complex128)
//array 数组
arr := [3]int{1, 2, 3}
for i := 0; i < len(arr); i++ { //访问数组方式1
fmt.Println(arr[i])
}
for index, v := range arr { //访问数组方式2
fmt.Println(index, v)
}
arr_index := [5]int{0: 1, 2, 3, 4} //下标初始化
fmt.Println(arr_index)
arr_dync := [...]int{1, 2, 3, 4} // 动态数组
fmt.Println(arr_dync)
array_struct := [...]struct { //数组对象
name string
age uint8
}{
{"user1", 10}, // 可省略元素类型
{"user2", 20}, // 别忘了最后一行的逗号
}
fmt.Println(array_struct)
var arr0 = [3][2]int{{1, 2}, {3, 4}, {1, 2}} //多维数组
fmt.Println(arr0)
var arr1 [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
fmt.Println(arr1)
arr_5 := [5]int{1, 2, 7}
findTargetNumArrIndex(arr_5, 8)
sumArr(arr_5) //求和
printArr(&arr_5) //打印数组
fmt.Println("arr_5: ", arr_5)
//slice 切片
slice := []int{1, 2, 3}
ints := append(slice, 4)
fmt.Println(ints)
var aa = []int{1, 3, 4, 5, 6}
fmt.Printf("slice a : %v , len(a) : %v cap(a):%v \n", aa, len(aa), cap(aa))
bb := aa[2:3]
fmt.Printf("slice b : %v , len(b) : %v cap(b):%v \n", bb, len(bb), cap(bb))
cc := bb[0:3]
fmt.Printf("slice c : %v , len(b) : %v cap(c):%v \n", cc, len(cc), cap(cc))
//map
m := make(map[string]string, 2)
m["key"] = "val"
fmt.Println(m["key"])
userInfo := map[string]string{
"k1": "v1",
"k2": "v2",
}
fmt.Println(userInfo)
val, ok := userInfo["k1"]
if ok {
fmt.Println(val)
}
for k, v := range userInfo { //遍历map
fmt.Printf("k:%v v:%v ", k, v)
}
//channel
ch := make(chan string)
go func() {
ch <- "Hello from goroutine"
}()
msg := <-ch
fmt.Println(msg)
//错误类型
getError()
}
func printArr(arr *[5]int) {
fmt.Println("print array ")
arr[0] = 10
for i, v := range arr {
fmt.Println(i, v)
}
}
func sumArr(sourceArr [5]int) {
sum := 0
for i := range sourceArr {
sum += sourceArr[i]
}
fmt.Println("sum值:", sum)
}
func findTargetNumArrIndex(sr [5]int, targetNum int) {
for i, v := range sr {
targetOtherNum := targetNum - v
for j, tv := range sr {
if tv == targetOtherNum {
fmt.Println("组合下标:", i, j)
}
}
}
}