1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. + 相加
    6. - 相减
    7. * 相乘
    8. / 相除
    9. % 求余=被除数-(被除数/除数)*除数
    10. 1、除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
    11. 2、取余注意 余数=被除数-(被除数/除数)*除数
    12. 3、注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
    13. */
    14. // var a = 6
    15. // var b = 3
    16. // fmt.Println(a + b)
    17. // fmt.Println(a - b)
    18. // fmt.Println(a * b)
    19. // var c = a * b
    20. // fmt.Println(c)
    21. // 1、除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
    22. // var a = 10
    23. // var b = 3
    24. // fmt.Println(a / b) //3
    25. // var a = 10.0
    26. // var b = 3.0
    27. // fmt.Println(a / b) //3.3333333333333335
    28. // 2、取余注意 余数=被除数-(被除数/除数)*除数
    29. // var a = 10
    30. // var b = 3
    31. // fmt.Println(a % b) //1
    32. // fmt.Println(-10 % 3) // - 10 - (-10/3)*3 =-1
    33. // fmt.Println(10 % -3) // 10-(10/-3)*-3=1
    34. //3、注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
    35. //1、注意:在 golang 中,++ 和 -- 只能独立使用 错误写法如下:
    36. /*
    37. var i int = 8
    38. var a int
    39. a = i++ //错误,i++只能独立使用
    40. a = i-- //错误, i--只能独立使用
    41. fmt.Ptintln(a)
    42. */
    43. //2、注意:在 golang 中没有前++ 错误写法如下:
    44. // var a = 12
    45. // ++a //错误写法
    46. // fmt.Println(a)
    47. //3、正确的写法
    48. var a = 12
    49. a++
    50. a--
    51. fmt.Println(a)
    52. }
    1. //关系运算
    2. package main
    3. import "fmt"
    4. func main() {
    5. /*
    6. == 检查两个值是否相等,如果相等返回 True 否则返回 False。
    7. != 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
    8. > 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
    9. >= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
    10. < 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
    11. <= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
    12. */
    13. //演示关系运算符的使用
    14. // var a1 = 9
    15. // var a2 = 8
    16. // fmt.Println(a1 == a2) //false
    17. // fmt.Println(a1 != a2) //true
    18. // fmt.Println(a1 > a2) //true
    19. // fmt.Println(a1 >= a2) //true
    20. // fmt.Println(a1 < a2) //flase
    21. // fmt.Println(a1 <= a2) //flase
    22. // flag := a1 > a2
    23. // fmt.Println("flag=", flag)
    24. // var a1 = 9
    25. // var a2 = 14
    26. // flag := a1 > a2
    27. // if flag {
    28. // fmt.Println("a1>a2")
    29. // }
    30. var a1 = 9
    31. var a2 = 8
    32. if a1 == a2 {
    33. fmt.Println("a1=a2")
    34. } else {
    35. fmt.Println("a1!=a2")
    36. }
    37. }
    1. //逻辑运算
    2. package main
    3. import "fmt"
    4. //定义一个方法
    5. func test() bool {
    6. fmt.Println("test...")
    7. return true
    8. }
    9. func main() {
    10. /*
    11. && 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
    12. || 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
    13. ! 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。
    14. */
    15. // var a = 23
    16. // var b = 8
    17. // fmt.Println(a > 10 && b < 10) //true
    18. // fmt.Println(a > 24 && b < 10) //false
    19. // fmt.Println(a > 5 && b < 6) //false
    20. // fmt.Println(a == 5 && b < 6) //false
    21. // var a = 23
    22. // var b = 8
    23. // fmt.Println(a > 10 || b < 10) //true
    24. // fmt.Println(a > 24 || b < 10) //true
    25. // fmt.Println(a > 5 || b < 6) //true
    26. // fmt.Println(a == 5 || b < 6) //false
    27. // flag := false
    28. // fmt.Println(!flag)
    29. //逻辑与和逻辑或短路
    30. //逻辑与:前面是false后面就不会执行 逻辑或:前面是true后面就不会执行
    31. /*
    32. test...
    33. 执行
    34. */
    35. // var a = 10
    36. // if a > 9 && test() {
    37. // fmt.Println("执行")
    38. // }
    39. /*
    40. 输出:
    41. */
    42. // var a = 10
    43. // if a > 11 && test() {
    44. // fmt.Println("执行")
    45. // }
    46. /*
    47. 输出:
    48. test...
    49. 执行
    50. */
    51. // var a = 10
    52. // if a > 11 || test() {
    53. // fmt.Println("执行")
    54. // }
    55. /*
    56. 输出:执行
    57. */
    58. var a = 10
    59. if a < 11 || test() {
    60. fmt.Println("执行")
    61. }
    62. }
    1. //赋值运算
    2. package main
    3. import "fmt"
    4. func main() {
    5. /*
    6. = 简单的赋值运算符,将一个表达式的值赋给一个左值
    7. += 相加后再赋值
    8. -= 相减后再赋值
    9. *= 相乘后再赋值
    10. /= 相除后再赋值
    11. %= 求余后再赋值
    12. */
    13. // var a = 20
    14. // a = 21
    15. // fmt.Println(a)
    16. // var a = 23 + 2
    17. // fmt.Println(a)
    18. // var a = 10
    19. // b := a
    20. // fmt.Println(b)
    21. // var a = 10
    22. // b := a + 2
    23. // fmt.Println(b)
    24. // var a = 10
    25. // a += 3 // 等价于a=a+3
    26. // fmt.Println(a)
    27. // var a = 10
    28. // a = a + 3
    29. // fmt.Println(a)
    30. // var a = 10
    31. // a -= 3 //a=a-3
    32. // fmt.Println(a)
    33. // var a = 10
    34. // a *= 3 //a=a*3
    35. // fmt.Println(a)
    36. // var a = 10
    37. // a /= 3 // a=a/3
    38. // fmt.Println(a) //结果:3
    39. // var a float64 = 10
    40. // a /= 3 // a=a/3
    41. // fmt.Println(a) //结果:3.3333333333333335
    42. var a = 10
    43. a %= 3 // a=a%3
    44. fmt.Println(a) //1
    45. }
    1. //位运算符
    2. package main
    3. import "fmt"
    4. func main() {
    5. /*
    6. & 两位均为1才为1
    7. | 两位有一个为1就为1
    8. ^ 相异或 两位不一样则为1
    9. << 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
    10. >> 右移n位就是除以2的n次方。
    11. */
    12. var a = 5 // 101
    13. var b = 2 // 010
    14. fmt.Println("a&b=", a&b) // 000 值0
    15. fmt.Println("a|b=", a|b) // 111 值7
    16. fmt.Println("a^b=", a^b) // 111 值7
    17. fmt.Println("a<<b=", a<<b) // 10100 值20 5*2的2次方
    18. fmt.Println("a>>b=", a>>b) // 值1 5/2的2次方
    19. }
    1. //位运算符
    2. package main
    3. func main() {
    4. //练习1:有两个变量,a和b,要求将其进行交换,最终打印结果
    5. // var a = 34
    6. // var b = 10
    7. // t := a //t=34
    8. // a = b //a=10
    9. // b = t //b=34
    10. // fmt.Printf("a=%v b=%v", a, b)
    11. //练习2:有两个变量,a和b,要求将其进行交换(不能使用中间变量),最终打印结果
    12. // var a = 34
    13. // var b = 10
    14. // a = a + b //a=34+10
    15. // b = a - b //b=34+10-10 34
    16. // a = a - b //a=(34+10)-(34+10-10) 10
    17. // fmt.Printf("a=%v b=%v", a, b)
    18. // 练习3:假如还有100天放假,问:xx个星期零xx天
    19. // var days = 100
    20. // var week = days / 7
    21. // var day = days % 7
    22. // fmt.Printf("距离放假还有%v周零%v天", week, day)
    23. /*
    24. 练习4:定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:
    25. C=(F-32)÷1.8,摄氏温标(°C)和华氏温标(°F),请求出华氏温度对应的摄氏温度
    26. */
    27. // var F float32 = 100 //华氏温度
    28. // C := (F - 32) / 1.8
    29. // fmt.Printf("华氏温度对应的摄氏温度是%.2f", C)
    30. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. Go 语言中 if 条件判断的格式如下:
    6. if 表达式1 {
    7. 分支 1
    8. }else if 表达式2 {
    9. 分支 2
    10. }else{
    11. 分支 3
    12. }
    13. */
    14. //1、最简单的if语句
    15. // flag := true
    16. // if flag {
    17. // fmt.Println("flag=true")
    18. // }
    19. // age := 30
    20. // if age > 20 {
    21. // fmt.Println("成年人")
    22. // }
    23. //2、if语句的另一种写法
    24. // if age := 34; age > 20 {
    25. // fmt.Println("成年人")
    26. // }
    27. //3、探讨上面两种写法的区别
    28. // age := 30 //当前区域内是全局变量
    29. // if age > 20 {
    30. // fmt.Println("成年人", age)
    31. // }
    32. // fmt.Println(age)
    33. // if age := 34; age > 20 { //局部变量
    34. // fmt.Println("成年人", age)
    35. // }
    36. // fmt.Println(age) // undefined: age
    37. //4、输入一个人的成绩,如果成绩大于等于90输出A,如果小于90大于75输出B,否则输出C
    38. // var score = 75
    39. // if score >= 90 {
    40. // fmt.Println("A")
    41. // } else if score > 75 {
    42. // fmt.Println("B")
    43. // } else {
    44. // fmt.Println("C")
    45. // }
    46. // if score := 85; score >= 90 {
    47. // fmt.Println("A")
    48. // } else if score > 75 {
    49. // fmt.Println("B")
    50. // } else {
    51. // fmt.Println("C")
    52. // }
    53. //5、if else要注意的细节
    54. //1、if{}不能省略掉
    55. // age := 30
    56. // if age > 20
    57. // fmt.Println("成年人")
    58. //2、 { 必须紧挨着条件
    59. // var age = 23
    60. // if age > 20 {
    61. // fmt.Println("成年人")
    62. // } else {
    63. // fmt.Println("未成年")
    64. // }
    65. //6、求两个数的最大值
    66. var a = 34
    67. var b = 65
    68. var max int
    69. if a > b {
    70. max = a
    71. } else {
    72. max = b
    73. }
    74. fmt.Println("a和b的最大值是", max)
    75. }
    1. package main
    2. func main() {
    3. /*
    4. for 初始语句;条件表达式;结束语句{
    5. 循环体语句
    6. }
    7. */
    8. // 1、打印1-10的所有数据
    9. /*
    10. for循环的执行流程
    11. 1、i := 1
    12. 2、i <= 10
    13. 3、执行花括号里面的语句
    14. 4、i++
    15. 5、i <= 10
    16. 6、执行花括号里面的语句
    17. 7、i++
    18. 8、i <= 10
    19. */
    20. // for i := 1; i <= 10; i++ {
    21. // fmt.Println(i)
    22. // }
    23. // 2、打印1-10的所有数据 for 循环的初始语句可以被忽略,但是初始语句后的分号必须要写
    24. // i := 1
    25. // for ; i <= 10; i++ {
    26. // fmt.Println(i)
    27. // }
    28. /*
    29. 3、打印1-10的所有数据
    30. 写for循环的时候要注意死循环
    31. for 条件 {
    32. 循环体语句
    33. }
    34. for 循环的初始语句和结束语句都可以省略,例如
    35. */
    36. // i := 1
    37. // for i <= 10 {
    38. // fmt.Println(i)
    39. // i++
    40. // }
    41. /*
    42. 4、打印1-10的所有数据
    43. for {
    44. 循环体语句
    45. }
    46. 注意:Go 语言中是没有 while 语句的,我们可以通过 for 代替
    47. */
    48. // i := 1
    49. // for {
    50. // if i <= 10 {
    51. // fmt.Println(i)
    52. // } else {
    53. // break //跳出循环
    54. // }
    55. // i++
    56. // }
    57. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //1、练习:打印 0-50 所有的偶数
    5. // for i := 0; i <= 50; i++ {
    6. // if i%2 == 0 {
    7. // fmt.Println(i)
    8. // }
    9. // }
    10. //2、练习:求 1+2+3+4 +...100 的和
    11. /*
    12. sum += sum+1 0+1
    13. sum += sum+2 0+1+2
    14. sum += sum+3 0+1+2+3
    15. sum += sum+4 0+1+2+3+4
    16. */
    17. // sum := 0
    18. // for i := 1; i <= 100; i++ {
    19. // sum += i
    20. // }
    21. // fmt.Println(sum) //5050
    22. //3、练习:打印 1~100 之间所有是 9 的倍数的整数的个数及总和
    23. // var sum = 0
    24. // var count = 0
    25. // for i := 1; i <= 100; i++ {
    26. // if i%9 == 0 {
    27. // fmt.Println(i)
    28. // sum += i
    29. // count++
    30. // }
    31. // }
    32. // fmt.Println(sum)
    33. // fmt.Println(count)
    34. //4、练习:计算 5 的阶乘 (12345 n 的阶乘 12……n) 1*2*3*4*5
    35. /*
    36. 1、sum=1*1
    37. 2、sum=sum*2 1*1*2
    38. 3、sum=sum*3 1*1*2*3
    39. 4、sum=sum*4 1*1*2*3*4
    40. 5、sum=sum*5 1*1*2*3*4*5
    41. */
    42. // var sum = 1
    43. // for i := 1; i <= 5; i++ {
    44. // sum *= i
    45. // }
    46. // fmt.Println(sum)
    47. //5、练习: 打印一个矩形 (for循环的嵌套)
    48. /*
    49. ****
    50. ****
    51. ****
    52. */
    53. // for i := 1; i <= 12; i++ {
    54. // fmt.Print("*")
    55. // if i%4 == 0 {
    56. // fmt.Println("")
    57. // }
    58. // }
    59. //6、for循环的嵌套
    60. /*
    61. for循环嵌套的一个执行流程
    62. 1、i=0 打印4个* 一个换行
    63. 2、i=1 打印4个* 一个换行
    64. 3、i=2 打印4个* 一个换行
    65. 4、i=3 跳出循环
    66. */
    67. // var row = 3
    68. // var column = 4
    69. // for i := 0; i < row; i++ {
    70. // for j := 0; j < column; j++ {
    71. // fmt.Print("*")
    72. // }
    73. // fmt.Println("")
    74. // }
    75. //7、练习: 打印一个三角形
    76. /*
    77. *
    78. **
    79. ***
    80. ****
    81. *****
    82. */
    83. // var row = 5
    84. // for i := 1; i <= row; i++ {
    85. // for j := 1; j <= i; j++ {
    86. // fmt.Print("*")
    87. // }
    88. // fmt.Println("")
    89. // }
    90. // 8、练习:打印出九九乘法表
    91. for i := 1; i <= 9; i++ {
    92. for j := 1; j <= i; j++ {
    93. fmt.Printf("%v*%v=%v \t", j, i, i*j)
    94. }
    95. fmt.Println("")
    96. }
    97. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. // var str = "你好golang"
    5. // for k, v := range str {
    6. // fmt.Printf("key=%v val=%c\n", k, v)
    7. // }
    8. // var arr = []string{"php", "java", "node", "golang"}
    9. // for i := 0; i < len(arr); i++ {
    10. // fmt.Println(arr[i])
    11. // }
    12. var arr = []string{"php", "java", "node", "golang"}
    13. for _, val := range arr {
    14. fmt.Println(val)
    15. }
    16. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. switch expression {
    6. case condition:
    7. }
    8. */
    9. // 练习:判断文件类型,如果后缀名是.html 输入 text/html, 如果后缀名.css 输出 text/css ,如果 后缀名是.js 输出 text/javascript
    10. // var ext = ".sss"
    11. // if ext == ".html" {
    12. // fmt.Println("text/html")
    13. // } else if ext == ".css" {
    14. // fmt.Println("text/css")
    15. // } else if ext == ".js" {
    16. // fmt.Println("text/javascript")
    17. // } else {
    18. // fmt.Println("找不到此后缀")
    19. // }
    20. // 1、switch case的基本使用
    21. // var extname = ".css"
    22. // switch extname {
    23. // case ".html":
    24. // fmt.Println("text/html")
    25. // break
    26. // case ".css":
    27. // fmt.Println("text/css")
    28. // break
    29. // case ".js":
    30. // fmt.Println("text/javascript")
    31. // break
    32. // default:
    33. // fmt.Println("找不到此后缀")
    34. // }
    35. // 2、switch case的另一种写法
    36. // switch extname := ".html"; extname {
    37. // case ".html":
    38. // fmt.Println("text/html")
    39. // break
    40. // case ".css":
    41. // fmt.Println("text/css")
    42. // break
    43. // case ".js":
    44. // fmt.Println("text/javascript")
    45. // break
    46. // default:
    47. // fmt.Println("找不到此后缀")
    48. // }
    49. // fmt.Println(extname) //undefined: extname
    50. // 3、一个分支可以有多个值,多个 case 值中间使用英文逗号分隔
    51. // 判断一个数是不是偶数
    52. // var n = 8
    53. // switch n {
    54. // case 1, 3, 5, 7, 9:
    55. // fmt.Println("奇数")
    56. // break //golang中break可以写也可以不写
    57. // case 2, 4, 6, 8, 10:
    58. // fmt.Println("偶数")
    59. // break
    60. // }
    61. // var score = "D" //ABC及格 D不及格
    62. // switch score {
    63. // case "A", "B", "C":
    64. // fmt.Println("及格")
    65. // case "D":
    66. // fmt.Println("不及格")
    67. // }
    68. //ABC及格 D不及格
    69. // switch score := "D"; score {
    70. // case "A", "B", "C":
    71. // fmt.Println("及格")
    72. // case "D":
    73. // fmt.Println("不及格")
    74. // }
    75. //4、分支还可以使用表达式,这时候 switch 语句后面不需要再跟判断变量。例如
    76. // var age = 18
    77. // switch {
    78. // case age < 24:
    79. // fmt.Println("好好学习")
    80. // case age >= 24 && age <= 60:
    81. // fmt.Println("好好赚钱")
    82. // case age > 60:
    83. // fmt.Println("注意身体")
    84. // default:
    85. // fmt.Println("输入错误")
    86. // }
    87. //5、 switch 的穿透 fallthrought
    88. //fallthrough`语法可以执行满足条件的 case 的下一个 case,是为了兼容 C 语言中的 case 设计 的
    89. var age = 30
    90. switch {
    91. case age < 24:
    92. fmt.Println("好好学习")
    93. case age >= 24 && age <= 60:
    94. fmt.Println("好好赚钱")
    95. fallthrough
    96. case age > 60:
    97. fmt.Println("注意身体")
    98. default:
    99. fmt.Println("输入错误")
    100. }
    101. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. Go 语言中 break 语句用于以下几个方面:
    6. • 用于循环语句中跳出循环,并开始执行循环之后的语句。
    7. • break 在 switch(开关语句)中在执行一条 case 后跳出语句的作用。
    8. • 在多重循环中,可以用标号 label 标出想 break 的循环。
    9. */
    10. //1、表示当i=2的时候跳出当前循环
    11. // for i := 1; i <= 10; i++ {
    12. // if i == 2 {
    13. // break
    14. // }
    15. // fmt.Println(i)
    16. // }
    17. // fmt.Println("继续执行")
    18. /*
    19. i=0
    20. i=0 j=0
    21. i=0 j=1
    22. i=0 j=2
    23. i=1
    24. i=1 j=0
    25. i=1 j=1
    26. i=1 j=2
    27. */
    28. // for i := 0; i < 2; i++ {
    29. // for j := 0; j < 10; j++ {
    30. // if j == 3 {
    31. // break
    32. // }
    33. // fmt.Printf("i=%v j=%v\n", i, j)
    34. // }
    35. // }
    36. //2、 break 在 switch(开关语句)中在执行一条 case 后跳出语句的作用。
    37. // var extname = ".html"
    38. // switch extname {
    39. // case ".html":
    40. // fmt.Println("text/html")
    41. // fmt.Println("text/html")
    42. // break
    43. // case ".css":
    44. // fmt.Println("text/css")
    45. // break
    46. // case ".js":
    47. // fmt.Println("text/javascript")
    48. // break
    49. // default:
    50. // fmt.Println("找不到此后缀")
    51. // }
    52. //3、在多重循环中,可以用标号 label 标出想 break 的循环。
    53. /*
    54. i=0 j=0
    55. i=0 j=1
    56. i=0 j=2
    57. */
    58. lable1:
    59. for i := 0; i < 2; i++ {
    60. for j := 0; j < 10; j++ {
    61. if j == 3 {
    62. break lable1
    63. }
    64. fmt.Printf("i=%v j=%v\n", i, j)
    65. }
    66. }
    67. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. // continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用。
    5. // for i := 1; i <= 10; i++ {
    6. // if i == 3 {
    7. // continue
    8. // }
    9. // fmt.Println(i)
    10. // }
    11. // 在 continue 语句后添加标签时,表示开始标签对应的循环
    12. // for i := 0; i < 2; i++ {
    13. // for j := 0; j < 10; j++ {
    14. // if j == 3 {
    15. // continue
    16. // }
    17. // fmt.Printf("i=%v j=%v\n", i, j)
    18. // }
    19. // }
    20. /*
    21. i=0 j=0
    22. i=0 j=1
    23. i=0 j=2
    24. i=1 j=0
    25. i=1 j=1
    26. i=1 j=2
    27. */
    28. lable2:
    29. for i := 0; i < 2; i++ {
    30. for j := 0; j < 10; j++ {
    31. if j == 3 {
    32. continue lable2
    33. }
    34. fmt.Printf("i=%v j=%v\n", i, j)
    35. }
    36. }
    37. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. // goto 语句通过标签进行代码间的无条件跳转。goto 语句可以在快速跳出循环、避免重复退 出上有一定的帮助。Go 语言中使用 goto 语句能简化一些代码的实现过程
    5. var n = 30
    6. if n > 24 {
    7. fmt.Println("成年人")
    8. goto lable3
    9. }
    10. fmt.Println("aaa")
    11. fmt.Println("bbb")
    12. lable3:
    13. fmt.Println("ccc")
    14. fmt.Println("ddd")
    15. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //1、数组的长度是类型的一部分
    5. // var arr1 [3]int
    6. // var arr2 [4]int
    7. // var strArr [3]string
    8. // fmt.Printf("arr1:%T arr2:%T strArr:%T", arr1, arr2, strArr)
    9. //2、数组的初始化 第一种方法
    10. // var arr1 [3]int
    11. // arr1[0] = 23
    12. // arr1[1] = 10
    13. // arr1[2] = 24
    14. // fmt.Println(arr1)
    15. // var strArr [3]string
    16. // strArr[0] = "php"
    17. // strArr[1] = "java"
    18. // strArr[2] = "golang"
    19. // // strArr[3] = "js" //out of bounds for 3-element array
    20. // fmt.Println(strArr)
    21. //2、数组的初始化 第二种方法
    22. // var arr1 = [3]int{23, 34, 5}
    23. // fmt.Println(arr1)
    24. // var arr1 = [3]string{"php", "nodejs", "golnag"}
    25. // fmt.Println(arr1)
    26. // arr1 := [3]string{"php", "nodejs", "golnag"}
    27. // fmt.Println(arr1)
    28. //3、数组的初始化 第三种方法 一般情况下我们可以让编译器 根据初始值的个数自行推断数组的长度
    29. // var arr1 = [...]int{12, 2324, 32435, 353, 535, 3535}
    30. // fmt.Println(arr1)
    31. // fmt.Println(len(arr1)) //len()打印数组的长度
    32. //注意数组的长度
    33. // arr1 := [...]string{"php", "nodejs", "golnag", "js"}
    34. // arr1[4] = "java" //: invalid array index 4 (out of bounds for 4-element array)
    35. // fmt.Println(arr1)
    36. //改变数组里面的值
    37. // arr1 := [...]string{"php", "nodejs", "golnag", "js"}
    38. // arr1[0] = "phper"
    39. // fmt.Println(arr1)
    40. // 4、数组的初始化 第四种方法 我们还可以使用指定索引值的方式来初始化数组
    41. // arr := [...]int{0: 1, 1: 10, 2: 20, 5: 50}
    42. // fmt.Println(len(arr)) //6
    43. // fmt.Println(arr) //[1 10 20 0 0 50]
    44. //5、数组的循环遍历 for for range
    45. // var arr = [3]int{23, 34, 5}
    46. // for i := 0; i < len(arr); i++ {
    47. // fmt.Println(arr[i])
    48. // }
    49. // arr1 := [...]string{"php", "nodejs", "golnag", "js"}
    50. // for i := 0; i < len(arr1); i++ {
    51. // fmt.Println(arr1[i])
    52. // }
    53. arr1 := [...]string{"php", "nodejs", "golnag", "js"}
    54. for k, v := range arr1 {
    55. fmt.Printf("key:%v value:%v\n", k, v)
    56. }
    57. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. // 1、请求出一个数组里面元素的和以及这些元素的平均值。分别用for和for-range实现
    5. // var arr = [...]int{12, 23, 45, 67, 2, 5}
    6. // var sum = 0
    7. // for i := 0; i < len(arr); i++ {
    8. // sum += arr[i]
    9. // }
    10. // fmt.Printf("arr数组元素的和是:%v 平均值:%.2f", sum, float64(sum)/float64(len(arr)))
    11. /*
    12. 2、请求出一个数组的最大值,并得到对应的下标
    13. 思路
    14. 1、 声明一个数组 var intArr = [...]int {1, -1, 12, 65, 11}
    15. 2、假定第一个元素就是最大值,下标就 0
    16. 3、然后从第二个元素开始循环比较,如果发现有更大,则交换
    17. */
    18. // var arr = [...]int{1, -1, 12, 65, 11}
    19. // var max = arr[0]
    20. // var index = 0
    21. // for i := 0; i < len(arr); i++ {
    22. // if max < arr[i] {
    23. // max = arr[i]
    24. // index = i
    25. // }
    26. // }
    27. // fmt.Printf("最大值:%v 最大值对应的索引值:%v", max, index)
    28. //3、从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
    29. var arr = [...]int{1, 3, 5, 7, 8}
    30. for i := 0; i < len(arr); i++ {
    31. for j := i + 1; j < len(arr); j++ {
    32. if arr[i]+arr[j] == 8 {
    33. fmt.Printf("(%v,%v)", i, j)
    34. }
    35. }
    36. }
    37. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. 值类型 :改变变量副本值的时候,不会改变变量本身的值
    6. 引用类型:改变变量副本值的时候,会改变变量本身的值
    7. */
    8. //值类型:基本数据类型 和 数组都是值类型
    9. // var a = 10
    10. // b := a
    11. // a = 20
    12. // fmt.Println(a, b)
    13. // var arr1 = [...]int{1, 2, 3}
    14. // arr2 := arr1
    15. // arr1[0] = 11
    16. // fmt.Println(arr1)
    17. // fmt.Println(arr2)
    18. //引用类型: 切片
    19. // var arr1 = []int{1, 2, 3}
    20. // arr2 := arr1
    21. // arr1[0] = 11
    22. // fmt.Println(arr1)
    23. // fmt.Println(arr2)
    24. var arr1 = []int{1, 2, 3, 4}
    25. arr2 := arr1
    26. arr2[0] = 111
    27. fmt.Println(arr1)
    28. fmt.Println(arr2)
    29. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //1、二维数组的定义
    5. // var arr = [3]int{1, 2, 3} 一维数组
    6. // var arr = [3][2]string{
    7. // {"北京", "上海"},
    8. // {"广州", "深圳"},
    9. // {"成都", "重庆"},
    10. // }
    11. // // fmt.Println(arr[0])
    12. // fmt.Println(arr[0][1])
    13. // var arr = [3][2]string{
    14. // {"北京", "上海"},
    15. // {"广州", "深圳"},
    16. // {"成都", "重庆"},
    17. // }
    18. // for _, v1 := range arr {
    19. // for _, v2 := range v1 {
    20. // fmt.Println(v2)
    21. // }
    22. // }
    23. // var arr = [3][2]string{
    24. // {"北京", "上海"},
    25. // {"广州", "深圳"},
    26. // {"成都", "重庆"},
    27. // }
    28. // for i := 0; i < len(arr); i++ {
    29. // for j := 0; j < len(arr[i]); j++ {
    30. // fmt.Println(arr[i][j])
    31. // }
    32. // }
    33. //定义二维数组的另一种方式
    34. var arr = [...][2]string{
    35. {"北京", "上海"},
    36. {"广州", "深圳"},
    37. {"成都", "重庆"},
    38. {"成都", "重庆"},
    39. {"成都", "重庆"},
    40. }
    41. fmt.Println(arr)
    42. }