首页 > 其他分享 >go介绍

go介绍

时间:2023-04-24 17:22:51浏览次数:44  
标签:name fmt 介绍 --- Println go age

go介绍

go 即golang,是Google公司2009年11月正式对外公开的一门编程语言
go是一种静态,强类型语言,是编译型语言(静态:类型固定  强类型:不同类型不允许直接运算)

解释性语言:源代码由解析器对代码进行解释执行
编译型语言:源代码编译生成机器语言,然后由机器执行机器码可执行

img

编译型语言:
	c,c++,c#,Java,go----> 编译成可执行文件--》可在操作系统上运行,不需要装任何东西
解释性语言:
	Python,node.js,php
java有编译过程--》没有编译成机器语言
Java中的字节码文件,机器是识别不了的,就需要Java的虚拟机:jvm能识别

运行Java必须要有jvm
jvm:java虚拟机
jre:java运行时环境
jdk:java开发环境
# python代码仿泄露方案
	-方案一:启动起来,把源代码删除
    -方案二:pipinstaller  打包成可执行文件
    -方案三:做到docker镜像中---》运行容器---》-e password=授权码
#python动态强类型

go的详细介绍

# go语言特性:
    跨平台
    语法接近c语言
    -管道(channel),切片(slice),并发(routine)
    -有垃圾回收的机制
    -支持面向对象和面向过程的编程模式
    
# go语言的发展
	-2015年8月19日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”---》以后再写go不用c写了,用go写---》语言的自举
    
    -2018年8月24日 go1.11 —— modules和WebAssembly支持  go mod模式  包管理
    -最新 1.20版
    
# go语言的应用
k8s---->go写的
docker----->go写的

img

# 应用领域
	服务开发、并发、分布式、微服务等方向,自动化运维,区块链
    服务端开发
    分布式系统,微服务
    网络编程
    区块链开发
    内存KV数据库,例如boltDB、levelDB
    云平台
# Go语言发展前景
    Go语言将登上语言榜前列,与C和Java并列前三甲
    Go语言称霸云计算
    Go将统治下一个10年
    目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
    Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态

go的安装及环境搭建

# go 的sdk---》开发环境 ----》 go1.20.3.windows-amd64.msi
# go 编辑器---》goland(jetbrains系列全家桶),vscode---》goland-2020.2.4.exe


# go1.20.3.windows-amd64.msi
  
版本不要选太早的或者太旧的,选择2023.3.4就差不多了

img

第一个helloworld

// 声明go文件属于那个包的,main有特殊含义,一个项目想要运行就必须有main包
//运行的入口是main包下的main函数

package main

//fmt表示的是fmt包,自动导入的,Goland自动导入的一个包,要使用哪个包,编辑器会自动导入
//包导入不使用就会报错,编译不过
import "fmt"

//func定义一个函数,main是一个函数名,
func main() {
	// a.. 提示的意思是传入的helloword实参给了a
	fmt.Println("helloword")
}
// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件---》支持跨平台编译---》想编译出linux的---》交叉编译

//编译  go build 文件名----》编译成可执行文件
// 运行,直接运行  双击

// 开发阶段----》编译并运行---》生成可执行文件,不再当前路径,用完就删除

// 编辑器有个快捷运行方式,右键运行

变量命名规范

// Go语言中的函数名、变量名、常量名、类型名和包名等所有的命名,都遵循一个简单的命名规则:
	1 一个名字必须以一个字母(Unicode字母)或下划线开头,
    后面可以跟任意数量的字母、数字或下划线
	2 大写字母和小写字母是不同的:Name和name是两个不同的变量(区分大小写,但是go的大写有特殊含义)
	3 关键字和保留字都不建议用作变量名
// 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

// 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文件命令:建议用下划线

// python  都用下划线
// java   都是驼峰

变量的定义和使用

1.完整定义
package main

import "fmt"

func main() {
	// 1.完整定义
	// var关键字 变量名 变量类型 = 变量名
	var name string = "zx"
	fmt.Println(name)
}

image

2.类型推导
// 2 变量定义了,必须使用,否则报错

// 3 类型推导(不写类型)---》自动推导出lqz 是字符串类型
	var name = "lqz"
	name = "pyy"
	name = 19
	fmt.Println(name)
    
// 4 虽然是类型推导出来的,但是是有类型的,并且后期不能变换类型
// 变量只要定义了,类型就固定了。后期不能改变
3.简略声明
//5 简略声明  ,省略var 省略类型,必须使用  :=
	name:= "lqz"
	fmt.Println(name)
4.一次性定义多个变量(其实就是基于上面三种变量定义方式的变形)
// 1.完整定义
var name, age, hobby string = "lqz", "19", "lanqiu"
//var (
//	name  string = "lqz"
//	age   int    = 19
//	hobby string = "篮球"
//)
fmt.Println(name)
fmt.Println(age)
fmt.Println(hobby)
// 2.类型推导
var name, age, hobby = "lqz", 19, "篮球"
var(
    name="lqz"
    age=19
    hobby="篮球"
)
fmt.Println(name)
fmt.Println(age)
fmt.Println(hobby)
// 3.简略声明
    name, age, hobby := "lqz", 19, "篮球"
    fmt.Println(name)
    fmt.Println(age)
    fmt.Println(hobby)
// 4.混合
var(
		name="lqz"
		age int=19
		hobby="篮球"
	)
	fmt.Println(name)
	fmt.Println(age)
	fmt.Println(hobby)
5.变量不能重复定义三种定义方式
var name = "lqz"
//var name string="pyy"
//name:="pyy"
name, age := "pyy", 19
fmt.Println(name)
fmt.Println(age)
  1. 查看变量类型
    a := "lqz"
    fmt.Printf("a的值是:%v,类型是:%T", a, a)
    

    image

标签:name,fmt,介绍,---,Println,go,age
From: https://www.cnblogs.com/zx0524/p/17350234.html

相关文章

  • Django4全栈进阶之路16 template模板的基础模板
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>{%blocktitle%}MySite{%endblock%}</title>{%blockstyles%}{%endblock%}</head><body><header><h1>MySite</h......
  • 1 Golang入门
    目录1Golang入门1Golang介绍1.1简介1.2特性1.3go语言发展1.4go语言的应用2go2.1包2.2main包2.3go程序的运行方式2.4声明包与包导入1Golang入门1Golang介绍1.1简介Go即Golang,是Google公司2009年11月正式对外公开的一门编程语言Go是【静态强类型】语言,是区别于......
  • 2 Golang语法基础
    目录2Golang语法基础1变量命名规范2语法规则:变量的定义与使用①完整定义②类型推导:自动推导出变量,是什么类型③简略声明:2Golang语法基础1变量命名规范Go语言中的函数名、变量名、常量名、类型名和包名等所有的命名,都遵循一个简单的命名规则:①一个名字必须以一个字......
  • Rust、Go 和 Swift 在性能和并发性方面有何差异?
    Rust是一种系统编程语言,旨在快速、安全和并发。其性能令人印象深刻,可以生成快速高效的机器代码。Rust 的编译器使用 LLVM 基础架构,它针对目标架构优化了代码。此外,Rust 的所有权和借用系统确保内存得到有效管理,没有任何运行时开销。Rust的并发模型是基于actor模型的,也就是说并......
  • 【介绍】C++五种迭代器
    目录1. 输入迭代器(Input Iterator):2. 输出迭代器(Output Iterator):3. 前向迭代器(Forward Iterator):4. 双向迭代器(Bidirectional Iterator):5. 随机访问迭代器(Random Access Iterator): 1. 输入迭代器(Input Iterator):支持单次读取和前进;即只能遍历一遍集合,并且只能向......
  • Go语言介绍、Go开发环境搭建、第一个helloworld、变量命名规范、变量的定义和使用
    目录1Go语言介绍2Go开发环境搭建3第一个helloworld4变量命名规范5变量的定义和使用1Go语言介绍#Go语言介绍Go即Golang,是Google公司2009年11月正式对外公开的一门编程语言Go是【静态强类型】语言,是区别于解析型语言的编译型语言(静态:类型固定强类型:不同类型不允许直接......
  • 加密Python项目代码之把Django或Flask项目打包成exe
    目录python代码仿泄露方案-方案一:启动起来,把源代码删除-方案二:pipinstaller打包成可执行文件-方案三:做到docker镜像中---》运行容器---》-epassword=授权码加密Python项目代码之把Django或Flask项目打包成exe:https://zhuanlan.zhihu.com/p/430490285......
  • python工具模块介绍-time 时间访问和转换
    快速入门In[1]:importtime#获取当前时间In[25]:time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())Out[25]:'2018-06-17_20-05-36'#停顿0.5秒In[26]:time.sleep(0.5)简介功能:时间访问和转换。相关模块:datetime 标准模块。calendar标准模块。下面介......
  • Codeforces Beta Round 96 (Div. 1) -- C. Logo Turtle (dp,记忆化搜索)
    记忆化搜索就是暴力,多一步优化,走过的路别走了。说实话,可能是数据水了,居然能过。constintN=510;strings;intn,ans;boolst[501][501][2][50];voiddfs(intx,intidx,intdir,intk){ if(st[x][idx][dir][k])return; st[x][idx][dir][k]=1;//走过的路不走......
  • idea - 在Terminal 交叉编译golang 解决
    1. 背景在ideaTerminal栏执行gobuildxxx.go打包的是exe文件交叉编译配置SETCGO_ENABLE=0SETGOOS=linuxSETGOARCH=arm64gobuildxxx.go发现编译文件仍然是exe2.解决需要切换为cmd指令执行cmd然后在执行交叉编译即可 ......