Go语言学习教程(二)

一、为什么使用开发工具

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

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

    * 提升开发效率

    * 功能强大

    * 软件使用不是特别复杂

    * 适合公司项目

二、Goland简介

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

    * 代码提示

    * 快速编译

    * 一键构建

*Goland的下载地址:http://www.jetbrains.com/go/

三、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)

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容