换个语言学一下 Golang (1)

做技术的总是有些拗。这么多年一直在.net的框框里打转转。直到现在市场上.net工作越来越难找,项目越来越老才发现不做出改变不行了。就从学习Go开始吧。

Go语言的特点

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

Go 语言用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

为什么使用Go语言

计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。

除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。

Go 语言最主要的特性:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

安装环境

Go 的官方网站http://golang.org/(需要FQ软件)

国内下载地址http://www.golangtc.com/download

下载对应平台的安装包。注意区分32位还是64位操作系统。

安装包下载完成之后,安装过程很简单,傻瓜式下一步到底就好了。

这时候看环境变量的话会发现增加了个GOPATH,这会保证我们的Go命令有效。

右键我的电脑->属性->高级设置->高级->环境变量

 

测试一下

1、创建工作目录 D:\>GoCode

2、建立个hello.go的文件,用文本编辑器就好了。

// main包,凡是标注为main包的go文件都会被编译成可执行文件
package main

// 导入需要使用的包
import (
    "fmt"    //支持格式化输出的包,就是format的简写
)

// 主函数,程序执行入口
func main(){    
    /*
        输出hello world!
        Println就是print line的意思
    */
    
    fmt.Println("hello world!")    
}

3、启动CMD窗口

编译运行命令:
go run hello.go
编译命令:
go build hello.go 生成 hello 可执行文件
执行:
hello 执行可执行文件

 好了,启动是ok了。

程序结构

我们上面写了一个hello world的小程序,我们现在用另外一个例子看下Go语言的程序结构:

// 当前程序的包名
package main

// 导入其他包
import . "fmt"

// 常量定义
const PI = 3.14

// 全局变量的声明和赋值
var name = "gopher"

// 一般类型声明
type newType int

// 结构的声明
type gopher struct{}

// 接口的声明
type golang interface{}

// 由main函数作为程序入口点启动
func main() {
    Println("Hello World!")
}

Go 程序是通过 package 来组织的。

只有 package 名称为 main 的包可以包含 main 函数。

一个可执行程序有且仅有一个 main 包。

通过 import 关键字来导入其他非 main 包。

可以通过 import 关键字单个导入:

import "fmt"
import "io"

也可以同时导入多个: 

import (
    "fmt"
    "math"
)

例如:下面我们求2的10次方

package main
import (
    "fmt"
    "math"
)
func main() {
    fmt.Println(math.Exp2(10))  // 1024
}

使用 <PackageName>.<FunctionName> 调用:

package 别名:
// 为fmt起别名为fmt2
import fmt2 "fmt"

省略调用(不建议使用):

// 调用的时候只需要Println(),而不需要fmt.Println()
import . "fmt"

前面加个点表示省略调用,那么调用该模块里面的函数,可以不用写模块名称了:

import . "fmt"
func main (){
    Println("hello,world")
}

通过 const 关键字来进行常量的定义。

通过在函数体外部使用 var 关键字来进行全局变量的声明和赋值。

通过 type 关键字来进行结构(struct)和接口(interface)的声明。

通过 func 关键字来进行函数的声明。

可见性规则

Go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用。

函数名首字母小写即为 private :

func getId() {}

函数名首字母大写即为 public :

func Printf() {}

 

其他

1. IDE 的下载安装这里就不说,大家直接去这个地址下载就行。

  Goland:https://www.jetbrains.com/go/download/#section=windows

  LiteIDE: https://studygolang.com/dl 这个是最新的1.10.3,免费的IDE 

2. 我用的是Atom 编辑器。配置有点麻烦,不建议大家使用。

3. 后面直接讲Go语言的如何使用。

4. 能翻的最好FQ,因为很多package 在golang官网,不FQ下载不下来。

posted @ 2019-06-25 11:52  tianyamoon  阅读(223)  评论(0编辑  收藏  举报