-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathbase_func.go
65 lines (54 loc) · 1.38 KB
/
base_func.go
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
package main
import (
"fmt"
"os"
)
func add(a int) int {
a = a + 1
return a
}
func add2(a *int) int {
*a = *a + 1
return *a
}
func mod(a int, b int) (c int, d int) {
return a, b
}
func testDefer() {
file, err := os.Open("hello.go")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
buf := make([]byte, 1024)
for {
n, _ := file.Read(buf)
if 0 == n {
break
}
os.Stdout.Write(buf[:n])
}
}
/*
C语言中提供了地址运算符&来表示变量的地址。其一般形式为: & 变量名; 如&a变示变量a的地址,&b表示变量b的地址。
变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式:
(1)指针变量初始化的方法 int a;
int *p=&a;
(2)赋值语句的方法 int a;
int *p;
p=&a;
不允许把一个数赋予指针变量,故下面的赋值是错误的: int *p;p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 也是错误的
-------------------------
• Go语言中string,slice,map这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针。(注:若函数需改变slice的长度,则仍需要取地址传递指针)
*/
func main() {
a := 1
b := add(a)
fmt.Println(b, a)
c := 1
d := add2(&c)
fmt.Println(d, c)
fmt.Println(mod(1, 3))
//testDefer()
}