GO临时笔记

编译型语言和解释型语言的区别

解释型 依赖虚拟机转换为可以执行的机器代码

编译型,少了转换步骤

诞生时机

诞生之初就考虑到了多核 cpu的情况。

其他语言诞生就没有多核,通过后期加语法框架支持

特点

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

1.从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和c语言一样的编译执行方式及弱化的指针。
2.引入包的概念,用于组织程序结构,G0语言的一个文件都要归属于一个包,而不能单独存在
3.垃圾回收机制,内存自动回收,不需开发人员管理
4.天然并发
(1)从语言层面支持并发,实现简单
(2)goroutine,轻量级线程,
可实现大并发处理,高效利用多核。
(3)基于CPs并发模型(Communicating Sequential Processes)实现

5.吸收了管道通信机制,形成Go语言特有的管道channel
通过管道channel,可以实现不同的goroute;之间的相互通信

6.函数支持返回多值

7.新的创新,切片、延迟执行defer等

执行流程

区别

说明:两种执行流程的方式区别
1.如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
2.如果我们是直接go run源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
3.在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

 

 

GO安装

方式一

https://golang.google.cn/dl/

方式二

brew install go@1.6

go语言项目结构

网站域名对应的是项目

helloword

注意 main入口的package也需要是main

package main

import "fmt"

func main() {
    fmt.Println("Hello world")
}

 

go常用命令

编译

 go build

直接执行go文件

go run main.go

go install 

安装并拷贝到gopath的bin目录下

go install 

跨平台编译 

如mac编译windos 二进制执行文件 windows编译mac 或者linux下运行的二进制文件

如:mac 编译windows和linux

env GOOS=windows GOARCH=amd64 go build -o output.exe 

env GOOS=linux GOARCH=amd64 go build -o output

go基本语法

变量申明

变量申明必须使用

#单个申明
var name string;
var age int;
var isOk bool;
#批量申明
var(
    name string;
    age int;
    isOk bool;
)
#类型推导
var name="小明";
#简短变量声明 仅能在函数中使用
age :=20

 常量

#单个申明 修改后不能改变
const pi=3.1415;

#批量申明
const(
    p1=1
    p2=2
)
const(
    p1=1 #下面的值跟他保持一致
    p2
    p3
)
#iota const没增加一个什么将 累加一次 在const出现时会重置未0
const(
  a1=iota  #1
  a2       #2
  a3       #3
)

 拉取依赖

go mod tidy 是一个 Go 语言命令,用于整理和更新项目的模块依赖关系。它会根据项目中的 go.mod 文件,自动删除未使用的依赖包,并添加缺失的依赖包。这个命令可以帮助保持项目的依赖关系清晰和更新。

idea运行main方法参数设置

server -c configs/config.yaml 

 

posted @ 2023-07-04 18:15  意犹未尽  阅读(9)  评论(0编辑  收藏  举报