文章目录
  1. 1. 变量
  2. 2. 函数
  3. 3. 错误处理
  4. 4. 小计

搭好环境,看看Go的语法吧,参考书:GO语言编程

第一天,个人感觉

  • Golang 应该属于结构化编程
  • 看到作者写到Golang是更好的C语言 这个观点到是相当赞同
  • 说实话吸引人的地方有限,defer? Multiple return values?

变量

变量描述:

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
//int
var a int
a = 1

b := 1

// string
c, str := 1, "string"

// Array
var is [2]int
is[0] = 1
is[1] = 2

a := [2][2]int{ {1,2}, {3,4} }

var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

// 切片
var mySlice []int = myArray[:5]

var slice1 = []int{1, 2, 3, 4, 5}

// 结构体
type PersonInfo struct {
	ID string
	Name string
	Address string
}

// map
var personDB map[string] PersonInfo
personDB = make(map[string] PersonInfo)

personDB["12345"] = PersonInfo{"12345", "Tom", "Room 203"}
personDB["1"] = PersonInfo{"1", "Jack", "Room 103"}

person, ok := personDB["1234"]
if ok {
	fmt.Println("Found Person ", person.Name, "with ID 1234 .")
} else {
	fmt.Println("Do not found Person with ID 1234 .")
}

monthdays := map[string]int{
	"Jan":31,"Feb":28,
}// 最后一个逗号是必须的。
fmt.Println("---- ", monthdays)
// ----  map[Jan:31 Feb:28]

函数

Golang中函数的基本组成为:关键字func,函数名,参数列表,返回值,函数体和返回语句

个人觉得这里得package name就是调用名,即:.method

Golang中的泛型 interface{}, 先这么理解吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func MyPrintf(args ...interface{}){
	for _, arg := range args {
		switch arg.(type) {
			case int:
				fmt.Println("int value")
			case string:
				fmt.Println("string value")
			case int64:
				fmt.Println("int64 value")	
			default:
				fmt.Println("noknown value")
		}
	}
}

错误处理

  • error接口 还不是太懂
  • defer 这个还是比较NB的,省下了好多close
  • panic & recover 讲的太少,下来在看吧

小计

  • 在有返回值的函数中,不能在有判断的地方直接renturn value
1
2
3
4
5
6
7
func example (x int) int {
	if x==0 {
		return 5
	} else {
		return x
	}
}

书上写Will throw: function ends without a return statement

但是我运行了下没出错啊... 是否是在说尽信书不如无书,哈哈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
import "fmt"

func example (x int) int {
	if x==0 {
		return 5
	} else {
		return x
	}
}
func main() {
	fmt.Println("Hello, 世界", example(4))
	fmt.Println("Hello, 世界", example(5))
}
1
2
Hello, 世界 4
Hello, 世界 5
  • 这样的命名规则 小写字母开头的函数只在本包可见,大写字母开头的函数才可以被其他包可见,该规则同样适用于类型和变量

    这个规则让人只想说shit

文章目录
  1. 1. 变量
  2. 2. 函数
  3. 3. 错误处理
  4. 4. 小计