前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言入门(一)

Go语言入门(一)

作者头像
alexhuiwang
发布2020-09-24 16:45:56
5200
发布2020-09-24 16:45:56
举报
文章被收录于专栏:运维博客运维博客

Go 的发展历史

诞生与历史

  • 诞生于2006年1月2日15点4分5秒
  • 2009年发布并正式开源
  • 2012年发布第一个正式版本Go 1.0
  • 截至当前2020年8月 Go版本到1.15

Go开发环境搭建

Go语言环境

git

Goland编辑器

Go目录结构介绍

  • vim ~/.bash_profile export GO111Module=on export GOPATH=/Users/wanghui/Codes/goCodes export PATH=PATH:GOPATH/bin:/usr/local/mysql/bin export PATH=
  • 设置其他目录
代码语言:javascript
复制
$ cd /Users/wanghui/Codes/goCodes/
$ mkdir pkg bin src

其中:

bin 目录存放编译后的二进制文件 pkg 存放编译后的库文件 src 原码文件

  • 目录结构划分一: 适用于个人的
Go语言入门(一)
Go语言入门(一)
  • 目录结构划分二: 使用于企业的
Go语言入门(一)
Go语言入门(一)

hello world 程序演示

  • 项目目录
代码语言:javascript
复制
$ mkdir $GOPATH/src/github.com/grexkin/lesson01/hello -p && cd $GOPATH/src/github.com/grexkin/lesson01/hello
  • 代码
代码语言:javascript
复制
$ vim hello.go
package main

import "fmt"

func main() {
    fmt.Println("hello world!")
}
  • 执行
代码语言:javascript
复制
$ go build hello.go   # 编译
$ ./hello             # 执行

Go 程序结构

  • go 源码按package进行组织,而且package要放到非注释行的第一行
  • 一个程序只有一个main包和main函数
  • main函数是程序的入口

包的概念

  • 和Python一样,把相同功能的代码放到一个目录,称之为包
  • 包可以被其他包引用
  • main包是用来生成可执行文件,每个程序只有一个main包
  • 包的主要用途是来提高代码的可复用性

注释

  • 单行注释
代码语言:javascript
复制
// 注释内容
  • 多行注释
代码语言:javascript
复制
/*
注释内容一
注释内容二
*/

Go常用的命令

基本命令

  • go run: 快速执行Go文件,就跟执行脚本一样
  • go build: 编译程序,生成二进制可执行文件
    • go build -o 生成程序的路径(包含程序名) 包名
  • go install: 安装可执行文件到$GOPATH/bin目录
  • go test: 执行单元测试或者压力测试
  • go env: 显示Go相关的环境变量信息
  • go fmt: 格式化源代码

Go语言特性

垃圾回收

  • 内存自动回收,再也不需要开发人员管理内存
  • 开发人员只关注业务实现,降低了心智负担
  • 只需要new分配内存,不需要释放

天然并发

  • 从语言层面支持并发,非常简单。只需要go 一下
  • goroutine: 轻量级线程,创建成千上万个groutine成为可能
代码语言:javascript
复制
package main

import (
    "fmt"
    "time"
)

func calc()  {
    for i := 0;i<10;i++ {
        fmt.Println("执行",i,"次")
    }
}

func main() {
    go calc()
    fmt.Printf("main thread!\n")
    time.Sleep(11*time.Second)
}

channel

  • 管道,类似于linux/unix 中的pipe[先进先出]
  • 多个goroutine之间通过channel进行通信
  • 支持任何类型

多返回值

  • 一个函数可以返回多个值
代码语言:javascript
复制
package main

import "fmt"

func add(a int,b int) (int,int){
    return a+b,a-b
}

func main() {
    sum,sub := add(7,8)
    fmt.Println(sum,sub)
}

编译型语言

  • 性能之比c语言差10%
  • 开发效率高
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go 的发展历史
    • 诞生与历史
    • Go开发环境搭建
      • Go语言环境
        • git
          • Goland编辑器
          • Go目录结构介绍
          • hello world 程序演示
            • Go 程序结构
              • 包的概念
                • 注释
                • Go常用的命令
                  • 基本命令
                  • Go语言特性
                    • 垃圾回收
                      • 天然并发
                        • channel
                          • 多返回值
                            • 编译型语言
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档