├── README.md └── src ├── arr └── index.go ├── mianji └── mianji.go ├── funcval └── index.go ├── hello └── myhello.go ├── loop └── index.go ├── funcs └── index.go ├── type └── index.go ├── ifelse └── index.go ├── main └── main.go ├── funcquote └── index.go └── calc └── index.go /README.md: -------------------------------------------------------------------------------- 1 | # go-study 2 | -------------------------------------------------------------------------------- /src/arr/index.go: -------------------------------------------------------------------------------- 1 | package arr 2 | 3 | func TestArr() { 4 | arrinfo := [] int {1,2,3,4,5,9} 5 | println(arrinfo[0]) 6 | } -------------------------------------------------------------------------------- /src/mianji/mianji.go: -------------------------------------------------------------------------------- 1 | package mianji 2 | 3 | import f "fmt" 4 | 5 | var l int 6 | var r int 7 | 8 | func GetMianji() { 9 | f.Println("请输入矩形的长:") 10 | f.Scanf("%d", &l) 11 | f.Println("请输入矩形的宽:") 12 | f.Scanf("%d", &r) 13 | f.Println("矩形的面积为:", l * r) 14 | } -------------------------------------------------------------------------------- /src/funcval/index.go: -------------------------------------------------------------------------------- 1 | package funcval 2 | // 值传递 3 | func TestVal() { 4 | var a int = 4 5 | var b int = 3 6 | 7 | println("值传递值 a:", a) 8 | println("值传递值 b:", b) 9 | 10 | swap(a, b) 11 | 12 | println("交换之后的 a:", a) 13 | println("交换之后的 b:", b) 14 | } 15 | 16 | func swap(x, y int) int { 17 | var res int 18 | res = x 19 | x = y 20 | y = res 21 | return res 22 | } 23 | -------------------------------------------------------------------------------- /src/hello/myhello.go: -------------------------------------------------------------------------------- 1 | package hello 2 | 3 | import "fmt" 4 | 5 | var a uint8 = 244 6 | var b = "hello world" 7 | var a1, b1, c1 = "戴", "伟", "哈哈哈" 8 | // a1, b1, c1 := "戴", "伟", "哈哈哈" 9 | var e1, d1, f1 int 10 | func TestHello() { 11 | a2, b3, c4 := "戴", "伟", "哈哈哈" 12 | fmt.Println(a) 13 | fmt.Println(b) 14 | fmt.Println(a2) 15 | fmt.Println(b3) 16 | fmt.Println(c4) 17 | } -------------------------------------------------------------------------------- /src/loop/index.go: -------------------------------------------------------------------------------- 1 | package loop 2 | 3 | func Loop1() { 4 | numbers := [6] int {1, 2, 3, 4, 5, 6} 5 | c := 5 6 | println("循环方式1---------") 7 | for a := 0; a < c; a++ { 8 | println("a的值为: ", a) 9 | } 10 | 11 | println("循环方式2---------") 12 | b := 0 13 | for b < c { 14 | println("b的值为: ", b) 15 | b++ 16 | } 17 | 18 | println("循环方式3---------") 19 | for index, x := range numbers { 20 | println("index值为: ", index, "数组的值为: ", x) 21 | } 22 | } -------------------------------------------------------------------------------- /src/funcs/index.go: -------------------------------------------------------------------------------- 1 | package funcs 2 | 3 | import "reflect" 4 | 5 | func MaxInfo(a, b int) int { 6 | var res int 7 | 8 | println(reflect.TypeOf(a)) 9 | println(reflect.TypeOf(b)) 10 | println(reflect.TypeOf(a).Elem) 11 | 12 | if a > b { 13 | res = a 14 | } 15 | 16 | if b > a { 17 | res = b 18 | } 19 | 20 | if b == a { 21 | res = b 22 | } 23 | return res 24 | } 25 | 26 | func Swap(x, y, j string) (string, string, string){ 27 | return x, y, j 28 | } 29 | -------------------------------------------------------------------------------- /src/type/index.go: -------------------------------------------------------------------------------- 1 | package datatype 2 | 3 | var a int = 3; 4 | var b int = a; 5 | var c string = "daiwei" 6 | const ( 7 | a1 = "abc" 8 | b1 = len(a1) 9 | ) 10 | 11 | const ( 12 | a2 = iota 13 | b2 14 | c2 15 | d2 = "ha" 16 | e2 17 | h2 = 100 18 | i2 19 | j2 = iota 20 | k2 21 | l2 22 | ) 23 | 24 | func PrintInfo() { 25 | b = 4 26 | println("a的值为%d:", a); 27 | a, b = b, a 28 | println("a的值为%d:", a); 29 | println(a1, b1); 30 | println(a2, b2, c2, d2, e2, h2, i2, j2, k2, l2); 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/ifelse/index.go: -------------------------------------------------------------------------------- 1 | package ifelse 2 | 3 | var a = 20 4 | func TestInfo() { 5 | println("-------------if else --------------") 6 | if a >= 10 { 7 | a -= 5 8 | println("a:", a) 9 | TestInfo() 10 | } 11 | } 12 | 13 | func TestSwitch(a string) { 14 | switch a { 15 | case "daiwei", "111": 16 | println("daiwei,你好啊") 17 | case "hahaha": 18 | println("why you smile") 19 | default: 20 | println("需要传一个正常的参数") 21 | } 22 | } 23 | 24 | func TestSwitchType() { 25 | var x interface{} 26 | switch i := x.(type) { 27 | case nil: 28 | println("x 的类型是: %T", i) 29 | case int: 30 | println("x 的类型是: int", i) 31 | case float64: 32 | println("x 的类型是: float64", i) 33 | case string: 34 | println("x 的类型是: string", i) 35 | case func(int): 36 | println("x 的类型是: func(int)型", i) 37 | } 38 | } -------------------------------------------------------------------------------- /src/main/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | f "fmt" 5 | "../hello" 6 | datatype "../type" 7 | // calc "../calc" 8 | // utils "../mianji" 9 | // condition "../ifelse" 10 | loopinfo "../loop" 11 | funcinfo "../funcs" 12 | funcval "../funcval" 13 | funcquote "../funcquote" 14 | arrinfo "../arr" 15 | ) 16 | 17 | func main() { 18 | hello.TestHello() 19 | f.Println("你好") 20 | // utils.GetMianji() 21 | datatype.PrintInfo() 22 | 23 | // calc.TestCalc() 24 | // calc.BaseInfo() 25 | // calc.SetInfo() 26 | // condition.TestInfo() 27 | // condition.TestSwitch("daiwei") 28 | // condition.TestSwitch("111") 29 | // condition.TestSwitchType() 30 | loopinfo.Loop1() 31 | println("最大值为:", funcinfo.MaxInfo(22, 111)) 32 | 33 | // 返回多个值 34 | a, b, c := funcinfo.Swap("Mahesh", "Kumar", "daiwei") 35 | println(a, b, c) 36 | 37 | funcval.TestVal() 38 | funcquote.TestQuote() 39 | 40 | arrinfo.TestArr() 41 | } -------------------------------------------------------------------------------- /src/funcquote/index.go: -------------------------------------------------------------------------------- 1 | package funcquote 2 | 3 | func swap(x, y *int) { 4 | temp := *x 5 | *x = *y 6 | *y = temp 7 | } 8 | 9 | func TestQuote() { 10 | add := func(x, y int) { 11 | println(&x, " + ", &y, " = ", x + y) 12 | } 13 | 14 | calc := func(x, y int) int { 15 | return x + y 16 | } 17 | 18 | var h1 int = 10 19 | var h2 int = 20 20 | println("引用传递值之前 h1:", h1) 21 | println("引用传递值之前 h2:", h2) 22 | 23 | swap(&h1, &h2) 24 | 25 | println("引用传递值之后 h1:", h1) 26 | println("引用传递值之后 h2:", h2) 27 | 28 | add(1, 2) 29 | 30 | println("x + y = ", calc(222, 312)) 31 | 32 | firstNum := BiBao(1, 2) 33 | println("匿名函数firstNum第一次执行:", firstNum(3)) 34 | println("匿名函数firstNum第二次执行:", firstNum(3)) 35 | println("匿名函数firstNum第三次执行:", firstNum(3)) 36 | 37 | secondNum := BiBao(1, 2) 38 | println("匿名函数secondNum第一次执行:", secondNum(5)) 39 | println("匿名函数secondNum第二次执行:", secondNum(5)) 40 | println("匿名函数secondNum第三次执行:", secondNum(5)) 41 | } 42 | 43 | func BiBao(x, y int) func(j int) int { 44 | i := 0 45 | return func(j int) int { 46 | i++ 47 | return i + x + y + j 48 | } 49 | } -------------------------------------------------------------------------------- /src/calc/index.go: -------------------------------------------------------------------------------- 1 | // 运算符 2 | package calc 3 | 4 | import( 5 | f "fmt" 6 | ) 7 | 8 | var a int = 10 9 | var b int = 20 10 | 11 | func TestCalc() { 12 | f.Print("---------- calc ---------\n") 13 | 14 | f.Println("a + b: ", a + b) 15 | a = a + b 16 | f.Println("a: ", a) 17 | 18 | f.Println("a - b: ", a - b) 19 | a = a - b 20 | f.Println("a: ", a) 21 | 22 | f.Println("a * b: ", a * b) 23 | a = a * b 24 | f.Println("a: ", a) 25 | 26 | f.Println("a / b: ", a / b) 27 | a = a / b 28 | f.Println("a: ", a) 29 | 30 | f.Println("a % b: ", a % b) 31 | a = a % b 32 | f.Println("a: ", a) 33 | } 34 | 35 | func BaseInfo() { 36 | var e uint = 60 /* 60 = 0011 1100 */ 37 | var d uint = 13 /* 13 = 0000 1101 */ 38 | var h uint = 0 39 | 40 | f.Println("e: 0011 1100") 41 | f.Println("d: 0000 1101") 42 | 43 | h = e & d 44 | f.Println("e & d: ", h) 45 | 46 | h = e | d 47 | f.Println("e | d: ", h) 48 | 49 | h = e ^ d 50 | f.Println("e ^ d: ", h) 51 | 52 | h = e << 2 53 | f.Println("e << 2: ", h) 54 | 55 | h = e >> 2 56 | f.Println("e >> 2: ", h) 57 | } 58 | 59 | func SetInfo() { 60 | var a int = 21 61 | var c int 62 | 63 | c = a 64 | println("c = a: ", c) 65 | 66 | c = a 67 | println("c = a: ", c) 68 | 69 | c += a 70 | f.Println("c += a", c) 71 | 72 | c -= a 73 | f.Println("c -= a", c) 74 | 75 | c *= a 76 | f.Println("c *= a", c) 77 | 78 | c /= a 79 | f.Println("c /= a", c) 80 | 81 | c %= a 82 | f.Println("c %= a", c) 83 | 84 | c = 200 85 | 86 | c <<= 2 87 | f.Println("c <<= 2", c) 88 | 89 | c >>= 2 90 | f.Println("c >>= 2", c) 91 | 92 | c ^= 2 93 | f.Println("c ^= 2", c) 94 | 95 | c |= 2 96 | f.Println("c |= 2", c) 97 | 98 | c &= 2 99 | f.Println("c &= 2", c) 100 | } --------------------------------------------------------------------------------