You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
5.5 KiB

  1. # 包管理
  2. 1. 一个文件夹可以称为一个包
  3. 2. 在文件夹(包)中可以创建多个文件
  4. 3. 在同一个包下的文件中,必须指定包名称,且包名称要相同
  5. **重点**:关于包的分类
  6. - main包
  7. - 非main包
  8. 如果是main包,必须写一个main函数,此函数就是项目的入口(main主函数),编译生成的就是一个可执行文件
  9. 非main包,用来将代码分类,分别放在不同的包和文件中
  10. 文件夹中编写功能是,功能(方法)的名字要大写 = >这样才能让外部调用
  11. 小写的只能内部调用
  12. 注意:
  13. - 调用其他包的功能,需要先 import 导入,然后再使用;调用自己包中的功能时,直接调用即可(无需导入)
  14. - 文件中的函数首字母是小写,表示此函数只能被当前包内部文件调用。首字母是大写,则意味着任何包都可以调用。
  15. # 输出
  16. 在终端将想要展示的数据显示出来,例如:欢迎登录、请输入用户名等
  17. - 内置函数
  18. - print
  19. - println
  20. - fmt包(推荐)
  21. - fmt.Print
  22. - fmt.Println
  23. 扩展:进程里有 stdin/stdout/stderr
  24. ## 注释
  25. 单行,多行
  26. # 数据类型
  27. - 整型,整数
  28. - 字符串,文本
  29. - 布尔型,真假
  30. ```go
  31. package main
  32. import "fmt"
  33. func main() {
  34. // 整型
  35. fmt.Println(666)
  36. fmt.Println(6 + 9)
  37. fmt.Println(6 - 9)
  38. fmt.Println(6 * 9)
  39. fmt.Println(16 / 9) // 商
  40. fmt.Println(16 % 9) // 余数
  41. // 字符串类型,特点:通过双引号
  42. fmt.Println("lihui")
  43. fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
  44. fmt.Println("lihui" + "SB")
  45. //fmt.Println("lihui" + 666)
  46. fmt.Println("lihui" + "666")
  47. // 对比
  48. fmt.Println("1" + "2") // 结果:"12"
  49. fmt.Println(1 + 2) // 结果:3
  50. // 布尔类型,真假
  51. fmt.Println(1 > 2) // false 假
  52. fmt.Println(1 < 2) // true
  53. fmt.Println(1 == 2)
  54. fmt.Println(1 >= 2)
  55. fmt.Println("lihui" == "sb")
  56. // 超前
  57. if 2 > 1 {
  58. fmt.Println("叫爸爸")
  59. } else {
  60. fmt.Println("孙子")
  61. }
  62. }
  63. ```
  64. # 变量
  65. 可以理解为昵称。
  66. - 声明 + 赋值
  67. ```
  68. var sd string = "老男孩lihui"
  69. fmt.Println(sd)
  70. var age int = 73
  71. fmt.Println(age)
  72. var flag bool = true
  73. fmt.Println(flag)
  74. ```
  75. - 先声明后赋值
  76. ```
  77. // 声明了一个字符类型变量 sd
  78. var sd string
  79. // 给sd变量赋值
  80. sd = "老男孩lihui"
  81. fmt.Println(sd)
  82. ```
  83. ## 变量名要求
  84. 1. 只包含字母、数字、下划线
  85. 2. 不能数字开头
  86. 3. 不能使用关键字
  87. ```go
  88. break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for、import、return、var
  89. ```
  90. ## 建议
  91. 1. 见名知意
  92. 2. 驼峰命名
  93. ## 变量简写
  94. `name:= "lihui"`
  95. go编译器会认为声明变量不使用 就是耍流氓,声明必须使用,否则报错
  96. ## 作用域
  97. 如果我们定义了大括号,那么在大括号中定义的变量。
  98. - 不能被上级使用。
  99. - 可以在同级使用。
  100. - 可以再子级使用。
  101. 全局变量,未写在函数中的变量称为全局变量;不可以使用`v1:=xx`方式进行简化;可以基于因式分解方式声明多个变量;项目中寻找变量时最后一环。
  102. 局部变量,编写在函数{}里面的变量;可以使用任意方式简化;可以基于因式分解方式声明多个变量;
  103. ## 赋值及内存相关
  104. ```go
  105. name := "lihui"
  106. ```
  107. ![image-20250613150030868](assets/day1/image-20250613150030868.png)
  108. ```go
  109. name := "lihui"
  110. nickname := name
  111. ```
  112. ![image-20250613150121048](assets/day1/image-20250613150121048.png)
  113. ```go
  114. name := "lihui"
  115. nickname := name
  116. name = "lihuibear"
  117. ```
  118. ![image-20250613150428962](assets/day1/image-20250613150428962.png)
  119. #### 注意事项
  120. 使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。【值类型】
  121. # 常量
  122. ## const
  123. 可以定义局部,可以定义全局
  124. ## iota
  125. 计数
  126. ```go
  127. package main
  128. import "fmt"
  129. func main() {
  130. // iota
  131. // 示例1
  132. const (
  133. v1 = 1
  134. v2 = 2
  135. v3 = 3
  136. v4 = 4
  137. v5 = 5
  138. )
  139. fmt.Println(v1, v2, v3, v4, v5)
  140. // 示例2
  141. /*
  142. const (
  143. v1 = iota
  144. v2
  145. v3
  146. v4
  147. v5
  148. )
  149. fmt.Println(v1, v2, v3, v4, v5)
  150. */
  151. // 示例3
  152. /*
  153. const (
  154. v1 = iota + 2
  155. v2
  156. v3
  157. v4
  158. v5
  159. )
  160. fmt.Println(v1, v2, v3, v4, v5)
  161. */
  162. // 示例4:
  163. /*
  164. const (
  165. v1 = iota + 2
  166. _
  167. v2
  168. v3
  169. v4
  170. v5
  171. )
  172. fmt.Println(v1, v2, v3, v4, v5)
  173. */
  174. }
  175. ```
  176. # 输入
  177. 让用户输入数据,完成项目交互。
  178. - fmt.Scan
  179. - fmt.Scanln
  180. - fmt.Scanf
  181. # 条件语句
  182. ## 最基本
  183. ```go
  184. if 条件 {
  185. 成立后,此代码块执行
  186. }else{
  187. 不成立,此代码块执行
  188. }
  189. ```
  190. ## 多条件
  191. ```go
  192. package main
  193. import "fmt"
  194. func main() {
  195. var length int
  196. fmt.Print("请输入你的长度:")
  197. fmt.Scanln(&length)
  198. if length < 1 {
  199. fmt.Println("没用的东西,还特么是坑")
  200. } else if length < 6 {
  201. fmt.Println("刚刚能用")
  202. } else if length < 18 {
  203. fmt.Println("生活和谐")
  204. } else {
  205. fmt.Println("太特么大了")
  206. }
  207. }
  208. ```
  209. ## 嵌套
  210. ``` go
  211. package main
  212. import "fmt"
  213. func main() {
  214. fmt.Println("欢迎致电10086,1.话费相关;2.业务办理;3.人工服务。")
  215. var number int
  216. fmt.Scanln(&number)
  217. if number == 1 {
  218. fmt.Println("话费服务,1.交话费;2.查询。")
  219. var n1 int
  220. fmt.Scanln(&n1)
  221. if n1 == 1 {
  222. fmt.Println("缴话费啦")
  223. } else if n1 == 2 {
  224. fmt.Println("查话费了")
  225. } else {
  226. fmt.Println("输入错误")
  227. }
  228. } else if number == 2 {
  229. fmt.Println("业务办理")
  230. } else if number == 3 {
  231. fmt.Println("人工服务")
  232. } else {
  233. fmt.Println("输入错误")
  234. }
  235. // 建议:条件的嵌套不要太多
  236. }
  237. ```