程序员鸡皮

文章 分类 评论
60 3 9

站点介绍

一名PHP全栈程序员的日常......

第二章 Golang的概述

abzzp 2024-08-13 406 0条评论 后端 Golang

首页 / 正文
本站是作为记录一名北漂程序员编程学习以及日常的博客,欢迎添加微信BmzhbjzhB咨询交流......

发布于2024-07-04

2.1 什么是程序

why is Go语言?

Go语言 是区块链最主流的编程语言,
同时也是当前最具发展潜力的语言。

Go语言是Google公司创造的语言,也是Google主推的语言。

国外如Google、AWS、Cloudflare、CoreOS等,国内如七牛,阿里,小米,京东等都已经开始大规模使用Golang开发其云计算相关产品。

Go语言诞生的小故事

<font color="blue">Go语言的核心开发团队</font>

Ken Thompson(肯·汤普森)。1983年图灵奖(Turing Award)和1998年美国国家技术奖得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言,同时也是C语言的主要发明人。

RobPike(罗布·派克):曾是贝尔实验室的Unix团队,和Plan9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。

Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8

<font color="blue">Google为什么要创造Go语言</font>

1.计算机硬件技术更新频繁,性能提升很快,目前主流的编程语言发展明显落后于硬件,不能合理使用多核多CPU的优势提升软件系统性能

2.软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简介高效的编程语言。【现有编程语言:1.风格不统一2.计算能力不够3.处理大并发不够友好】

3.企业运行维护很多c、c++的项目,c、c++程序运行速度虽然很快,但是编译速度很慢。同时还存在内存泄漏的一系列的困扰要解决。

2.2Go语言发展简史

2007年,谷歌工程师Rob Pike,Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。

2009年11月10日。Google Docs将Go语言以开放源代码的方式向全球发布。

2015年8月19日,Go1.5版发布,本次更新中移除了 “最后残余的C代码”

2017年2月17日,Go语言Go1.8版发布。
2017年8月24日,Go语言Go1.9版发布。
2018年2月16日,Go语言Go1.10版发布。

2.3 Golang的语言特点

简介

Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率.使用一个表达式来形容Go语言:Go = C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

1.从C语言中继承了很多概念,包括表达式语法,控制结构,基础数据类型,调用数据类型,动用参数传值,指针等,也保留了和C语言一样的编译执行方式及弱化的指针。

举一个案例(体验):

//go 语言的指针使用特点(体验)
func testPu(num *int){
   *num = 20
}

2.引入包的概念,用于组织程序结构,<font color="red">Go语言的一个文件都要归于一个包,而不能单独存在</font>

package main // 一个go文件需要在一个包
import "fmt"
func sayOk(){
    // 输出一句话
    fmt.Println('ok')
}
  1. 垃圾回收机制,内存自动回收,不需要开发人员管理【C容易出现内存泄漏】

4.天然并发【重要特点】

a.从语言层面支持并发,实现简单
b.goroutine,轻量级线程,可实现大并发处理,高效利用多核
c. 基于CPS并发模型(Communicating Sequenlal Processess) 实现
d.吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信。

// 写一个函数,实现同时返回 和,差
// go函数支持返回多个值
func getSumAndSub(n1 int,n2 int)(int,int){
    sum := n1 + n2 // go语言后不要加;
    sub := n1 - n2 
    return sum,sub
}
e.新的创新:比如切片slice、延时执行defer等

2.4 Golang 开发工具的介绍

工具选择(vscode)

1.下载地址

https://code.visualstudio.com/download

2.window安装
简单下一步下一步,略

VSCode的安装和使用
在d盘创建gocode

3.如何在Liunx中安装vscode

略(一般不在liunx上来开发)

2.5 Windows下搭建Go开发环境-安装和配置SDK

介绍SDK

1.SDK的全称(Software Development Kit 软件开发工具包)
2.SDK是提供给开发人员使用的,其中包含了对开发语言的工具包

SDK下载:

1.Go语言的官网为:golang.org,因为各种原因,可能无法访问
2.SDK下载地址:Golang中国 https://www.golangtc.com/download

Windows下安装SDK:

1.Windows下SDK的个个版本说明:

Windows下:根据自己系统是32位还是64位进行下载:
32位系统:go1.9.2.windows-386.zip
64位系统:go1.9.2windows-amd64.zip

2.请注意,安装路径不要有中文或者特殊符号或符号如空格等
3.SDK安装目录建议,Windows放在d盘
4.安装时,基本上是傻瓜式安装,解压就可以用

Windows下配置Golang环境变量:

为什么配置环境变量
1.看一个现象

2.原因分析

错误原因:当执行的程序在当前目录下如果不存在,Windows系统会在系统中已有的一个名为path的环境变量指定的目录下查找,如果仍旧没找到,会出现以上错误提示,所以进入到go安装路径\bin目录下,执行go,会看到go参数提示信息

在Go开发中,需要配置那些环境变量

a. GOROOT

b.Path

c.GOPATH

安装完之后,检查一下是否安装成功,重新打开cmd命令窗口。如下图

Liunx下搭建Go开发环境-安装和配置SDK

1.Liunx下安装SDK:

Liunx下:根据系统是32位和64位(uname -a查看命令)

2.请注意:环境路径不要有中文或者特殊符号如空格等
3.SDK安装目录建议:liunx放在/opt目录下
4.安装时,解压即可,我们使用的是tar.gz

Linux下配置Golang环境变量

1.在/etc/profile文件夹下添加

export GOROOT=/opt/go
export PATH=$PATH:$GOROOT$/bin
export GOPATH=$HOME/goprojects/

2.提示:修改/ets/profile文件,需要root权限或者sudo名字

2.7 Mac下搭建Go开发环境-安装和配置SDK

1.Mac下SDK的各个版本说明:
Mac OS 下,只有64位的软件安装包
Mac OS 系统的安装包:go1.9.2.darwin-amd64.tar.gz

2.请注意:安装路径不要有中文或者特殊符号如空格等
3.sdk安装目录建议:Mac一般放在用户目录下go_devigo下
4.安装时,解压即可

Mac下配置Golang环境变量:
步骤1:使用root用户,修改/etc/profile增加环境变量的配置

export GOROOT=$HOME/go_dev/go
export PATH=$PATH/bin
export GOPATH=$HOME/goproject

步骤2:配置成功后,需要注销。再次启动。执行go version查看是否配置成功

2.8Go语言快速开发入门

需求
要求开发一个hello.go程序,可以输出“hello,world”

1.目录结构

2.代码如下:

对上图说明

a.go文件的后缀是.go
b.package.main
表示该hello.go 文件所在的包是main,在go中,每个文件都归属于一个包
c.import "fmt" 表示引入一个包,包名fmt,引入改包后就可以使用fmt包中的函数,比如:fmt.Prinln
d.func main(){
} func 是一个关键字,表示一个函数。main是函数名。是一个主函数,即我们程序的入口。
e. fmt.Println("hello") 表示使用fmt这个包的函数输出“hello”

  1. 通过go build命令对该go文件进行编译,生成.exe文件

4.运行hello.exe文件即可

5.注意:通过go run命令可以直接运行 hello.go 程序

Liunx下如何开发Go程序

说明:liunx下开发go和Windows开发基本是一样的,只是在运行可执行的程序时以./文件名方式
演示:

编译和运行

// 编译
go build hello.go
// 运行
./hello

也可以直接用go run hello.go方式运行

Mac下如何开发Go程序

说明:在Mac下开发go程序和Windows基本一样
演示一下:如何在Mac下开发一个Go程序

编译再运行,或者go run来运行

编译和运行说明

1.有了go源文件,通过编译器选择将其编译成机器可以识别的二进制码文件。

2.在改源文件目录下,通过go build对hello.go 文件进行编译。可以指定生成的可执行文件,在Windows下必须是.exe后缀

修改编译文件名指令

go build -a myhello.exe hello.go

3.如果没有错误,没有任何提示,会在当前目录下出现一个可执行文件(Windows下是.exe, Liunx下是一个可执行文件),该文件是二进制码文件,也是可以执行的程序

4.如果程序有错误,编译时,会在错误的那行报错。有助于程序员排错

运行

1.直接运行生成的可执行Go程序,比如hello.exe
2.通过运行工具go run对源码文件进行运行

Go开发注意事项


1.Go源文件以“go”为扩展名

2.Go应用程序的执行入口是main()函数

3.Go语言严格区分大小写

4.Go方法由一条条语句构成。每个语句后不需要分号(Go语言会在每行后自动加分号),这个也体现出Golang的简介性。

5.Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多行写在同一个,否则会报错

6.go语言定义的变量或者import的包如果没有用到,代码不能编译通过。

7.大括号都是成对出现的,缺一不可

2.9 Go语言的转意字符

常用的转义字符有

  1. \t : 相当于一个tab空格键
  2. \n :换行符
  3. \ :一个\
  4. \" :一个"
  5. \r : 一个回车

案例:

package main

import "fmt" // 格式化,输入,输出的函数
func main(){
    // 演示转义符  \t
    fmt.Println("tom\tjack")

    fmt.Println("hello\nworld")
    fmt.Println("C:\\Users\\Administrator.S4RSCM1IE7T6BE7\\Desktop\\Project\\public")
    fmt.Println("tom说\"i love you\"")
    // \r 回车,从当前的最前面的开始输出,覆盖掉以前的内容
    fmt.Println("天龙八部雪山飞狐\r张飞厉害")
}

作业

要求用一句话输出一下语句,达到下图效果

代码如下:

package main
import "fmt"
func main(){
    fmt.Println("姓名\t年龄\t籍贯\t地址\njohn\t16\t河北\t北京")
}

2.11 注释

行注释
// 注释内容
块注释
/*
注释内容
*/

2.12 规范的代码风格

正确的注释和代码风格
1.Go官方推荐使用行注释来注释整个方法和语句
正确的缩进和空白
1.使用一次tab操作,实现缩进默认整体向右边移动,快捷键shfit+tab向左移动
2.或者使用 gofmt来进行格式化

gofmt -w xxx.go

3.运算符两边各加一个空格。

var num = 1 + 1

4.代码风格
正确

package main
import "fmt"
func main(){
    fmt.PrintLn("hello,world!") // shift+alt+向下箭头  复制
}

错误

package main
import "fmt"
func main(){
fmt.PrintLn("hello,world!") // shift+alt+向下箭头  复制
}

5.一行最长不要超过80个字符,超过要换行展示

fmt.PrintLn("hello,world!hello,world!hello,world!hello,world!hello,world!hello",
",world!hello,world!hello,world!hello,world!",
"hello,world!hello,world!hello,world!")

Golang官方编辑指南

Golang官方网站 https://golang.org

Golang官方标准库API文档,https://golang.org/pkg 可以查看所有包下的函数和使用

Golang 中文网 在线标准库文档:https://studygolang.com/pkgdoc

2.15 Dos的常用指令

dos的基本介绍
Dos:Disk Operating System 磁盘操作系统,简单说一下windows的目录结构

  1. 查看当前目录 dir
  2. 切换到F盘符 cd /d f:
  3. 切换到上级目录 cd ..
  4. 切换到顶级目录 cd \

目录操作

1.创建目录ok200 md ok200

 创建ok300和ok400 **md ok300 ok400**

2.删除目录
rd /q/s ok200 q表示不需要询问s代表包含子文件

创建文件

echo helloworld > abc.txt
echo helloworld > d:/go/gocode/abc.txt

复制和移动
复制 copy abc.txt d:\test //使用原来文件名

    **copy abc.txt d:\test\a.txt**  // 使用新文件名

移动

  **move abc.txt d:\test**

删除

   **del xxx.txt** // 删除所有.txt (*.txt)
   

清屏

    **cls**

退出

     **exit**

课后习题

1.写一个输出 hello,golang的程序

package main
import "fmt"

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

2.将个人信息 姓名 性别 表格输出出来

package main

import "fmt"

func main(){
    fmt.Println("姓名\t性别\n张三\tman")
}

感谢大家观看,我们下次见

评论(0)

最新评论

  • abzzp

    十天看一部剧,还可以吧[[呲牙]]

  • ab

    @梦不见的梦 行,谢谢提醒,我优化一下

  • 梦不见的梦

    网站的速度有待提升,每次打开都要转半天还进不来呢

  • abzzp

    @React实战爱彼迎项目(二) - 程序员鸡皮 哪里有问题了,报错了吗?[[微笑]]

  • abzzp

    @Teacher Du 那是怕你们毕不了业,我大学那会儿给小礼品[[发呆]]

  • Teacher Du

    我们大学那会,献血还给学分~

  • @ab 我想去学网安,比如网警,但分也贼高😕

  • ab

    @夜 加油,你一样也可以成为程序员的,需要学习资料可以V我

  • 佬发布的好多技术文章似乎我只能评论这篇,真正的程序员!!哇塞 我也想去献血,过两年就成年了可以去献血了

日历

2024年11月

     12
3456789
10111213141516
17181920212223
24252627282930

文章目录

推荐关键字: vue JavaScript React Golang 观后感 ES6 读后感

站点公告
本站是作为记录一名北漂程序员编程学习以及日常的博客,欢迎添加微信BmzhbjzhB咨询交流......
点击小铃铛关闭
配色方案