Golang基础教程

第一章:走进Golang

Golang引入

  • 简介: Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。
  • 设计初衷: Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,"使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。"
  1. 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  2. 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
  3. 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。
  • 应用领域:

第一段程序:Hello Golang!

  • go基本目录结构:

  • 开始写代码:第一个HelloWorld :
package main //声明文件所在的包,每个go文件必须有归属的包
import "fmt" //引入程序中需要用的包,为了使用包下的函数  比如:Println
func main () { //main 主函数 程序的入口
    fmt.Println("Hello Golang!!") //在控制台打印输出一句话,Hello Golang!!
}
复制代码
  • 对源文件进行编译:go bulid

  • 执行操作

  • 也可以通过go run直接编译、执行文件(但不生成exe文件)

Golang执行流程

  • 执行流程分析:

  • 上述两种执行流程的方式区别

    1. 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件 变大了很多。

    2. 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
    3. 如果我们是直接go run go源代码,那么如果要在另外一个机器上这么运行,也需要go 开发环境,否则无法执行。
    4. go run运行时间明显要比第一种方式 长一点点
  • 编译注意事项: 编译后的文件可以另外指定名字:

语法注意事项

  • 源文件以"go"为扩展名。
  • 程序的执行入口是main()函数。
  • 严格区分大小写。
  • 方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性。
  • Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错
  • 定义的变量或者import的包如果没有使用到,代码不能编译通过。
  • 大括号都是成对出现的,缺一不可

注释

  • 注释的作用: 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性; 注释是一个程序员必须要具有的良好编程习惯。 将自己的思想通过注释先整理出来,再用代码去体现。

  • Golang中注释类型: Go支持c语言风格的/**/块注释,也支持c++风格的//行注释。行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码

    • 行注释 // VSCode快捷键:ctrl+/ 再按一次取消注释

    • 块注释(多行注释) /**/ VSCode快捷键:shift+alt+a 再按一次取消注释

      注意:块注释中不可以嵌套块注释

提示:官方推荐使用行注释 //

代码风格

  • 注意缩进

    向后缩进:tab 向前取消缩进:shift+tab 通过命令完成格式化操作:

  • 成对编程 {} () “ ” ‘ ’
  • 运算符两边加空白 ( ps : 一般来说,写代码的时候都得这样,这是规范编写代码的好习惯 )
  • 以下代码是错误的:

go的设计者想要开发者有统一的代码风格

  • 行长约定:

    一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

API

Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。

第二章 变量与数据类型

变量

  • 简单代码展示
package main
import "fmt"
func main(){
    //1.变量的声明
    var age int
    //2.变量的赋值
    age = 18
    //3.变量的使用
    fmt.Println("age = ", age);
    //声明和赋值可以合成一句:
    var age2 int = 19
    fmt.Println("age2 = ", age2);
    // var age int = 20;
    // fmt.Println("age = ", age);
    /*变量的重复定义会报错:
         # command-line-arguments
                .\main.go:16:6: age redeclared in this block
                        previous declaration at .\main.go:6:6
        */
    //不可以在赋值的时候给与不匹配的类型
    var num int = 12.56 //报错
    fmt.Println("num = ", num);
}
复制代码
  • 变量的四种定义方法、一次性声明多个变量(代码展示)
package main
import "fmt"
//全局变量:定义在函数外的变量
var n7 = 100
var n8 = 9.7
//设计者认为上面的全局变量的写法太麻烦了,可以一次性声明:
var (
    n9 = 500
    n10 = "netty"
)
func main(){
    //定义在{}中的变量叫:局部变量
    //第一种:变量的使用方式:指定变量的类型,并且赋值,
    var num int = 18
    fmt.Println(num) //18
    //第二种:指定变量的类型,但是不赋值,使用默认值 
    var num2 int
    fmt.Println(num2) //0
    //第三种:如果没有写变量的类型,那么根据=后面的值进行判定变量的类型 (自动类型推断)
    var num3 = "tom"
    fmt.Println(num3) //tom
    //第四种:省略var,注意 := 不能写为 =   
    sex := "男"
    fmt.Println(sex) //男
    fmt.Println("------------------------------------------------------------------")
    //声明多个变量:
    var n1,n2,n3 int
    fmt.Println(n1) //0
    fmt.Println(n2) //0
    fmt.Println(n3) //0
​
    var n4,name,n5 = 10,"jack",7.8
    fmt.Println(n4) //10
    fmt.Println(name) //jack
    fmt.Println(n5) //7.8
​
    n6,height := 6.9,100.6
    fmt.Println(n6) //6.9
    fmt.Println(height) //100.6
    //全局变量输出
    fmt.Println(n7) //100
    fmt.Println(n8) //9.7
    fmt.Println(n9) //500
    fmt.Println(n10) //netty
}
复制代码

基本数据类型

整数类型

  • 有符号整数类型

  • 无符号整数类型

  • 30
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值