1-go介绍、go开发环境搭建、命名规范

1 go介绍

# 1 谷歌公司09年推出
	-python :89-java:90# 2 Go是静态  强类型  语言,是区别于解析型语言的编译型语言(静态:有编译过程  强类型:不同类型不允许直接运算)
	-python:动态 强类型
    	-必须手动转类型,再做运算
    	-不同类型之间不允许之间运算  'asdfasd'+19
    -js :动态弱类型
    -java : 字符串+数字---》语法支持---》静态态强类型---》java 隐士类型转换
    
# 3 go 源代码---》编译成---》可执行文件
	-之前编译型语言不跨平台
    -redis:源码编译安装---》把源码下载---》make&&make install ---》编译成当前平台的可执行文件
    -java---》编译型语言---》编译到中间状态---》不是可执行文件---》字节码文件--->不能直接运行在操作系统之上---》运行在 java虚拟机上----》 运行java项目---》装jdk
    
# 4 go 跨平台的编译型语言
	win 编译出 linux的可执行文件---》交叉编译
# 5 语法接近C语言

# 6 管道(channel),切片(slice),并发(routine)

# 7 有垃圾回收的机制  三色标记法

# 8 支持面向对象和面向过程的编程模式
	-go 的面向对象不是传统意义上的面向对象
# 9 发展史
2009117日 weekly.2009-11-06 —— 早期的版本

2012328日 go1 —— 稳定版版的发布
2013514日 go1.1 —— 语言本身的变化、库的变化等。
20131201日 go1.2 —— 提供更好的调度和一个新的语言特性。
2014618日 go1.3 —— 主要是在实现的工作上的变化,以及精准的垃圾回收。
20141210日 go1.4 —— 包含了2个很小的语言变更。
------------
2015819日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”。
201627日 go1.6 —— 语言本身、运行时、和库的实现的变化。

2016815日 go1.7 —— 标准库有显着的性能改进和变化。

2017226日 go1.8 —— 标准库有显着的性能改进和变化。
2017824日 go1.9 —— 是包含语言,标准库,以及运行时的诸多变化。这个版本中的大部分工作都是对运行时和工具的改进。

2018216日 go1.10 —— 大部分更改都在工具链,运行时和库的实现中。
--------
2018824日 go1.11 —— modules和WebAssembly支持。
20192 月 go 1.12 —— modules和WebAssembly支持。
20192 月 go 1.12— — 基于 analysi包重写了 go vet`命令,为开发者写自己的检查器提供了更大的灵活性
20199 月 go 1.13— — 改进了 sync 包中的 Pool,在 gc 运行时不会清除 pool。它引进了一个缓存来清理两次 gc 运行时都没有被引用的 pool 中的实例。重写了逃逸分析,减少了 Go 程序中堆上的内存申请的空间
20202 月 go 1.14— — 现在 Go Module 已经可以用于生产环境,鼓励所有用户迁移到 Module。该版本支持嵌入具有重叠方法集的接口。性能方面做了较大的改进,包括:进一步提升 defer 性能、页分配器更高效,同时 timer 也更高效。现在,Goroutine 支持异步抢占

https://golang.google.cn/dl/
    目前最新:1.21.5

2 go开发环境搭建

#  开发环境
	-go sdk---》内置包:https://golang.google.cn/dl/
    -编辑器:goland
    
# 关于编辑器
	-Jetbrains公司全家桶---》收费的
    	-Goland  
        -pycharm
        -IDEA
        -webstorm
        -破解方案一样
    -vscode 微软的---》免费---》前端,python,go
    -sublimetext
    
    
# golang和goland有什么区别?
	编程语言
    ide
    
    
#  运行环境---》不需要搭建


#1  go sdk 安装一路下一步,安装完成, 安装目录会被加入到环境变量,在任意路径敲 go  都有反应
# go version
go version go1.21.5 windows/amd64

# 2 安装goland---》自行安装

3 第一个helloworld

# 编译代码---》可执行文件
	go build demo01.go # 编译 
    demo01.exe # 运行
    
    
# 编译并运行
	go run demo01.go  # 编译的文件,当前路径看不到,放在别的位置,用完删除的
    
    
    
# goland ---》右键运行





### 代码
package main   # 声明go文件所属包是main包--》go运行必须有入口--》main包下的main函数 

import "fmt"  # 表示导入fmt包 等同于:import os  打印函数在fmt包下---》python的在 内置函print

func main() {
     # main函数
	fmt.Println("hello world")  # 打印hello world
}

4 命名规范

# 变量定义规范
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:
    1 一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
    2 大写字母和小写字母是不同的:Name和name是两个不同的变量
    3 关键字和保留字都不建议用作变量名
    
    
# go 关键字  25个  写在编辑器中会变色

break      default       func     interface   select
case       defer         go       map         struct
chan       else          goto     package     switch
const      fallthrough   if       range       type
continue   for           import   return      var

# go 保留字 37个保留字,主要对应内建的常量、类型和函数
内建常量: true false iota nil
内建类型:  int int8 int16 int32 int64   
          uint uint8 uint16 uint32 uint64 uintptr
          float32 float64 complex128 complex64
          bool byte rune string error

内建函数: make len cap new append copy close delete   
          complex real imag
          panic recover
            
            
# 注意:
	-go中定义变量 建议使用驼峰,不建议使用 _  
    -go文件定义 建议使用 下划线,不建议用 驼峰

相关推荐

  1. 1-go介绍go开发环境命名规范

    2023-12-15 04:48:07       32 阅读
  2. 从零开始Go语言开发环境

    2023-12-15 04:48:07       41 阅读
  3. GO语言 环境

    2023-12-15 04:48:07       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 04:48:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 04:48:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 04:48:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 04:48:07       18 阅读

热门阅读

  1. 2.4 C语言之运算符

    2023-12-15 04:48:07       39 阅读
  2. openCV图像SIFT特征

    2023-12-15 04:48:07       37 阅读
  3. Vue3后台管理-项目总结

    2023-12-15 04:48:07       42 阅读
  4. vue3制作类微信的六位的密码输入框

    2023-12-15 04:48:07       29 阅读
  5. B - Team Gym - 102801B ( 网络流问题)

    2023-12-15 04:48:07       39 阅读
  6. 在浏览器中存储数组和对象(js的问题)

    2023-12-15 04:48:07       36 阅读
  7. centos7配置国内源

    2023-12-15 04:48:07       35 阅读