【Golang之路】Golang初识 开启之路

对于该专栏文章,都是自己的学习文章记录,如果有文章的错误理解之处,也欢迎大家直接指出,也很高兴和大家一起学习进步。

 

Go语言简介

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。

Go语言(简称Golang)是云计算时代的C语言,Go的诞生能够使得程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行优化,使用Go编译的程序可以和C或C++代码的速度。而且更加安全,支持并行进程。

Go语言就是在C/C++和python之间架起了桥梁,提供了了很快的执行速度,可快速开发,使得变成高性能的语言,也让开发变得更加迅捷。

 

Go语言优势

  • 可直接编译成机器码,不依赖其它库,glibc的版本有要求,部署简单(直接放一个文件即可)。
  • 静态类型语言,但是有动态语言的感觉。
    • 静态类型的语言:可以在编译的时候检查出隐藏的大多数问题
    • 动态类型的语言:很多包都可以直接使用,使得写代码的效率很高。
  • 语言层面而言,支持开发,也是Go语言的特色,使得Go可以直接充分利用多核,可以很容易地使用并发,这也是很多公司用作Go做后台服务器的原因之一。
  • 内置Runtime,支持垃圾回收,这一特性属于动态语言的特性之一,对于早期版本Go的GC(垃圾回收机制)不完美,但是足以应对多数情况。
  • 简单易学,Go语言的作者有C的基础。所以很多部分继承了C的内容,包括大多数语言中的特性:继承、重载、对象等。
  • 丰富的标准库,Go语言目前内置了大量的库,特别是网络库。
  • 内置强大的工具,Go语言内置了很多工具链,例如gofint工具,自动化格式化代码。
  • 跨平台编译
  • 内嵌C支持,Go里面也可直接包含C代码,利用现有丰富的C库。

Go语言的适合用途

  • 服务器编程(处理日志、数据打包、虚拟机处理、文件系统等),相比于在Go之前,都是C或C++在做类似的事情。
  • 分布式系统、数据库代理器等。
  • 网络编程(应用最广的领域):包括了Web应用、API应用、下载应用。
  • 内存数据库:如Google开发的groupcache、couchbase的部分组建。
  • 云平台

环境搭建

由于我的是MAC系统,对于Fusion而言,只安装了Ubuntu系统,所以对于windows安装环境下学习小伙伴,可以直接Google Search一下。

MAC OS环境下的安装使用 brew

brew install go

或者

brew install golang

 

 

Ubuntu系统环境下直接在命令行:

apt install golang-go

 

在安装完成之后,可直接使用go  version来查看go是否安装成功和查看它的版本。

 

对于Go的环境搭建之后,就是对于编译器的选择,个人特别喜欢JetBrains家族中的Goland,具体的安装可以Google Search一下。

 

标准命令概述

对于标准命令的概述具体可以参考:https://studygolang.com/pkgdoc

 

第一个Go语言

Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数 / 函数体
  • 变量
  • 语句 & 表达式
  • 注释
package main // package main 定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包

import (

"fmt" 

) /* import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 */



func main() { // func main() 是程序开始执行的函数(函数的入口)。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该数)。

   /* 这是hello world的程序 */  //  /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

   fmt.Println("Hello,Go World!") //  fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。 Print 和 Println 这两个函数也支持使用变量

}

关于包,根据本地测试得出以下几点:

  • 文件名与包名没有直接关系,不一定要将文件名与包名定成同一个。
  • 文件夹名与包名没有直接关系,并非需要一致。
  • 同一个文件夹下的文件只能有一个包名,否则编译报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小何同学

不需要打赏,关注公号即可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值