一、为什么使用开发工具

* 在企业开发中不使用记事本进行开发,而使用开发工具,因为开发工具可以提升开发效率。 

 

  * 不同公司的开发工具可能不同,但是每个工具选择开发工具时都满足以下几点 

 

      * 提升开发效率 

 

      * 功能强大 

 

      * 软件使用不是特别复杂 

 

      * 适合公司项目 

 
 

  二、 
 Goland简介 

 

  * Goland由JetBrains公司推出的专门针对Go语言的开发工具,使用Goland时有如下优点: 

 

      * 代码提示 

 

      * 快速编译 

 

      * 一键构建 

 

  *Goland的下载地址: 
 GoLand by JetBrains: More than just a Go IDE 

 
 

  三、Goland简单使用 

 

  1、新建项目 

 

  2、选择项目的路径,注意路径不要包含中文 

 

  3、新建Go文件,右键"Study"-->"New"-->"Go File" 

 

  4、在弹出框中输入文件名, 选择Kind为"Simple Application"可以生成包名和主函数 

 

  5、编写代码后,在空白位置右键,选择"Run 'go build main.go'" 

 

  6、 
 弹出控制台,观察结果 

 
 
 
 四、Goland常用配置 

 

  * 主题设置(Darcula) 

 

      * 菜单"File"-->"Settings"-->Appearance & Behavior -->右侧Theme修改主题 

 

  * 字体大小设置(24) 

 

      * 菜单"File"-->"Settings"-->Editor --> Font -->右侧Size输入字体大小 

 

  * 快捷键设置(Eclipse) 

 

      * 菜单"File"-->"Settings"-->右侧选择自己熟悉软件的快捷键 

 
 

  五、打印输出 

 

  * 在程序中输出使用频率很高,使用输出语句可以在程序执行过程中把一些结果输出到控制台中,程序员通过控制台中输出结果判断是否符合预期 

 

  * 在Go语言中有多种输出方式,不同的输出适用场景不同.归纳起来三种,每种还分为3种方式(原内容,原内容+ln,原内容+f) 

 

      * PrintXX() 

 

      * FprintXX() 

 

      * SprintXX() 

 
 

  * FprintXX在Go Web中使用比较多,把内容写到响应流中 

 

  * Fprintln()输出后会添加换行符,所以长度比内容多1个 

 
 

  *代码示例:os.Stdout 表示控制台输出流 

 

  func main() { 

 

      fmt.Fprint(os.Stdout, "内容1")//向流中写入内容,多个内容之间没有空格 

 

      fmt.Fprintln(os.Stdout, "内容2")//向流中写入内容后额外写入换行符,多个内容之间空格分割 

 

      fmt.Fprintf(os.Stdout, "%s", "内容3")//根据verb格式向流中写入内容 

 

  } 

 
 

  * Println()底层实际是Fprintln(),返回值依然是内容长度和错误信息 

 
 

  *Sprintln和Println()主要的区别是: 

 

      * Sprintln()把形成结果以字符串返回,并没有打印到控制台 

 

      * Println()把结果打印到控制台,返回内容长度和错误 

 

  * 所以从严格意义角度讲SprintXX不是打印输出,而更像字符串转换 

 
 

  六、转义字符 

 

  * 在Go语言中可以使用 
 %+特定字母或/+特定字母形成转义字符,这个表示特定含义的组合称为转义字符. 

 

  * 在Go语言中又称为verb 

 

  * 转义字符在Go语言中在以下两种情况使用频率较高 

 
 

  * 以下为常用转义字符 

 
verb
含义
%d
十进制整数
%x,%X
大小写方式显示十六进制整数
%o
八进制整数
%b
二进制整数
%f,%g,%e
浮点数
%t
布尔值
%c
字符
%s
字符串
%q
带双引号字符串
%v
内置格式内容
%T
类型
%p
内存地址
%%
字符%
\n
换行
\t
缩进
 

  七、用户输入 

 

  * 用户输入在平时练习中使用频率较高. 

 

  * 程序运行时,运行到接收用户输入语句,程序阻塞,用户在控制台输入内容后,把内容赋值给对应的变量,程序继续运行. 

 

  * 在Go语言中有多种接收用户输入的方式,其中使用fmt包的Scan函数使用最简单 

 
 

  * 使用Scanln(&变量名,&变量名)的方式接收. 

 

      * 输入的内容必须都在同一行 

 

      * 每个内容之间使用空格分割 

 

      * 回车换行后表示停止输入. 

 

      * 如果希望接收3个值,而在控制台只输入2个值,回车后也停止接收 

 

      * 如果希望接收2个值,而在控制台输入3个,回车后只能接收两个值 

 
 

  * 也可以使用fmt.Scanf(verb,&变量)按照特定的格式进行输入 

 
 

  * 需要注意,如果同行输入两个字符串,中间必须使用空格隔开,否则编译器无法对输入内容拆分 

 
 

  八、变量声明和赋值 

 

  8.1 静态语言和动态语言 

 

  * 静态类型语言和强类型语言是同一个意思,表示在编译期就确定了类型,而且类型是不可以改变的 

 

  * 动态类型语言和弱类型语言是同一个意思,表示在运行过程中才能确定,且内容是什么类型变量类型跟随变化 

 
 

  8.2 Go语言变量简介 

 

  * Go语言和其他语言一样都有基本存储容器.可以存储一个或多个值在程序中,方便程序中多次使用容器中内容,这个容器称为:变量 

 

  * Go语言虽然是静态类型语言,但是支持动态类型语言语法,因为Go语言希望程序员少声明变量,增加GC效率 

 
 

  8.3 变量命名规则 

 

  * 以字母或下划线开头(Go语言中多不以_开头) 

 

  * 后面可以是任意数量的字符、数字和下划线 

 

  * 区分大小写 

 

  * 不能是关键字(关键字具备特定含义) 

 

  * 可以是保留字,但是建议不使用保留字做为变量名, 

 

  * 在同一范围内不允许出现同名变量 

 

  * 
 Go语言要求变量声明后至少使用一次(赋值不属于使用) 

 
 

  8.4 变量声明及赋值 

 

  * 先声明后赋值(声明后开辟内存,不同类型变量都有不同初值) 

 

  //1. 声明 

 

  var 变量名 类型 

 

  //2. 赋值 

 

  变量名=值 

 
 

  //示例: 

 

  var smallming string 

 

  smallming = "英文名" 

 
 

  * 声明并赋值(此方式不建议) 

 

  //语法: 

 

  var 变量名 类型 = 值 

 
 

  //示例 

 

  var smallming string = "英文名" 

 
 

  * 声明并赋值(省略类型,变量类型取决于值的类型) 

 

  //语法: 

 

  var 变量名 = 值 

 
 

  //示例: 

 

  var smallming = "英文名" 

 
 

  * 短变量(只能在函数内使用) 

 

  //语法: 

 

  变量名 := 值 

 
 

  //示例: 

 

  smallming := "英文名" 

 
 

  8.5 声明多个变量和赋值 

 

  * 先声明后赋值 

 

  func main() { 

 

      var a, b, c int 

 

      a, b, c = 1, 2, 3 

 

      fmt.Println(a, b, c) 

 

  } 

 
 

  * 声明时赋值 

 

  func main() { 

 

      var a, b, c, d = 1, 2, 3, false 

 

      fmt.Println(a, b, c, d) 

 

  } 

 
 

  * 声明并赋值,推荐方式 

 

  func main() { 

 

      var ( 

 

          a = 1 

 

          b = true 

 

          c = "测试" 

 

      ) 

 

      fmt.Println(a, b, c) 

 

  } 

 
 

  * 使用短变量给多个变量赋值时,必须要保证至少有个变量是没有声明的 

 

  func main() { 

 

      var ( 

 

          a = 1 

 

          b = true 

 

          c = "测试" 

 

      ) 

 

      //短变量操作多个值时只要保证里面至少有一个新变量 

 

      b, c, d := false, "smallming", 3 

 

      fmt.Println(a, b, c, d) 

 

  }