首页 > 其他分享 >Go语言介绍、Go开发环境搭建、第一个helloworld、变量命名规范、变量的定义和使用

Go语言介绍、Go开发环境搭建、第一个helloworld、变量命名规范、变量的定义和使用

时间:2023-04-24 15:47:38浏览次数:41  
标签:变量 fmt helloworld --- Println Go age name

目录

1 Go语言介绍

#Go语言介绍
Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言
Go是【静态 强类型】语言,是区别于解析型语言的编译型语言(静态:类型固定 强类型:不同类型不允许直接运算)
解析型语言——源代由解析器对代码进行解释执行
编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行

#编译型:
	c,java,c++,c#,go  编译成可执行文件---》在操作系统上运行,不需要装任何东西
# 解释型:
	python,nodejs,php
# java:
	java有编译过程---》没有编译成机器语言---》字节码文件,机器识别不了---》java虚拟机:jvm能识别
    运行java必须要有jvm
    jvm:java虚拟机
    jre:java运行时环境
    jdk:java开发环境
    
#python解释型:python---》可执行文件----》pipinstaller  
	-https://zhuanlan.zhihu.com/p/430490285
        
        
# python代码仿泄露方案
	-方案一:启动起来,把源代码删除
    -方案二:pipinstaller  打包成可执行文件
    -方案三:做到docker镜像中---》运行容器---》-e password=授权码
#python动态强类型



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

2 Go开发环境搭建

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


# go1.20.3.windows-amd64.msi

3 第一个helloworld

# 创建项目
# 创建一个go文件
# 写代码
package main // 声明这个go文件属于哪个包,main有特殊含义,一个项目要运行必须要有main包,运行的入口是main包下的main函数

// 表示导入fmt包,自动导入的,goland自动导入的,使用了哪个包,编辑器会自动导入
// 包导入,不使用,会报错,编译不过
import "fmt"

// func 定义一个函数 ,main 是函数名,没有参数,没有返回值,整个项目入口
func main() {
	// 在控制台输出helloworld
	fmt.Println("helloworld")  // a... 提示的,意思是传的helloworld实参,给了a

}

// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件---》支持跨平台编译---》想编译出linux的---》交叉编译

// 编译代码---》编译成可执行文件---》默认编译成当前平台可执行文件---》支持跨平台编译---》想编译出linux的---》交叉编译

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

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

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

4 变量命名规范

// 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   都是驼峰

5 变量的定义和使用

package main

import "fmt"

// 变量定义

func main() {
	//1 完整定义
	// var关键字 变量名 变量类型  = 变量值
	//var name string = "lqz"
	//fmt.Println(name)
	//
	//var age int = 19
	//fmt.Println(age)

	// 2 变量定义了,必须使用,否则报错

	// 3 类型推导(不写类型)---》自动推导出lqz 是字符串类型
	//var name = "lqz"
	//name = "pyy"
	//name = 19
	//fmt.Println(name)

	// 4 虽然是类型推导出来的,但是是有类型的,并且后期不能变换类型
	// 变量只要定义了,类型就固定了。后期不能改变

	//5 简略声明  ,省略var 省略类型,必须使用  :=
	//name:= "lqz"
	//fmt.Println(name)

	// 6 一次性声明多个变量(其实就是基于上面三种变量定义方式的变形)
	// 6.1 完整定义
	//var name, age, hobby string = "lqz", "19", "篮球"
	//var (
	//	name  string = "lqz"
	//	age   int    = 19
	//	hobby string = "篮球"
	//)
	//fmt.Println(name)
	//fmt.Println(age)
	//fmt.Println(hobby)

	// 6.2 类型推导
	//var name, age, hobby = "lqz", 19, "篮球"
	//var(
	//	name="lqz"
	//	age=19
	//	hobby="篮球"
	//)
	//fmt.Println(name)
	//fmt.Println(age)
	//fmt.Println(hobby)

	// 6.3 简略声明
	//name, age, hobby := "lqz", 19, "篮球"
	//fmt.Println(name)
	//fmt.Println(age)
	//fmt.Println(hobby)

	// 6.4   6.1和6.2混合
	//var(
	//	name="lqz"
	//	age int=19
	//	hobby="篮球"
	//)
	//fmt.Println(name)
	//fmt.Println(age)
	//fmt.Println(hobby)

	// 7 变量不能重复定义三种定义方式)
	//var name = "lqz"
	////var name string="pyy"
	////name:="pyy"
	//name, age := "pyy", 19
	//fmt.Println(name)
	//fmt.Println(age)

	// 8 变量可以先定义在赋值,必须使用完整定义(方式一)
	//var name string //默认值   空字符串
	//var age int     // 默认值是0

	//var age  不行
	//name  :=  不行

	//age = 19
	//fmt.Println(name)
	//fmt.Println(age)

	// 9 简略声明用的多 a:=10

	// 10 查看变量类型
	//a := 99
	a := "lqz"
	fmt.Printf("a的值是:%v,类型是:%T", a, a)

}

标签:变量,fmt,helloworld,---,Println,Go,age,name
From: https://www.cnblogs.com/bnmm/p/17349701.html

相关文章

  • 加密Python项目代码之把Django或Flask项目打包成exe
    目录python代码仿泄露方案-方案一:启动起来,把源代码删除-方案二:pipinstaller打包成可执行文件-方案三:做到docker镜像中---》运行容器---》-epassword=授权码加密Python项目代码之把Django或Flask项目打包成exe:https://zhuanlan.zhihu.com/p/430490285......
  • 7.Linux环境变量
    前言我们上节课学习了用户及权限的相关知识,同时也学习了远程登录,这节课再给大家讲讲环境变量,我们在手动安装很多程序时都会要设置环境变量,所以这节课就给大家介绍一下,当然也不仅仅是介绍环境变量,中间也会有一些新命令,最后会带大家手动安装一下java开发环境alias命令Linux的alia......
  • 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然后在执行交叉编译即可 ......
  • 基于golang实现ssh terminal
    基于golang实现sshterminal实现sshterminal相对比较容易,简单来说需要初始化ssh连接后,通过ssh连接创建一个会话,定义好输入、输出,然后再请求pty(需要定义好modes)与远程会话进行关联。packagemainimport( "fmt" "github.com/gin-gonic/gin" "github.com/gorilla/websocket"......
  • 在vue标签代码块中定义变量
     方式一:<template><h1>test</h1><template:set="first=list[0]">//定义变量<div>{{first.name}}</div>//使用变量</template>...</template><script>exportdefault{......
  • Google Cloud磁盘空间占满导致无法ssh进入的解决方案
    GoogleCloud磁盘空间沾满导致ssh无法进入的解决方案我他妈真的吐了,昨天在写apriori算法的时候,chatgpt弄了半天都不对,然后我重新看了下这个算法,发现其实也不难,就暴力写了个。因为python的类型太过自由,一直以2行/分钟的速度在推进度(用C++早tm写完了呀),然后终于跑出来了一些像样的......
  • go模拟三元表达式最简单的方式
    众所周知,Go语言本身并没有提供内置的三元表达式,但是我们可以使用一些技巧来模拟实现。下面是使用最短的代码实现Go的三元表达式:packagemainimport"fmt"funcmain(){x:=10y:=20max:=map[bool]int{true:x,false:y}[x>y]fmt.Println(max)}......
  • Django4全栈进阶之路13 template模板
    在Django4中,模板是用于生成HTML响应的文件。模板将动态数据和静态HTML组合在一起,以便最终呈现给用户的页面。Django4中的模板使用Django模板语言(DjangoTemplateLanguage,简称DT)编写。DT与HTML类似,但包含一些特殊的标记和语法,用于动态地生成HTML内容。以下是一......
  • 记录一次nodejs操作mongodb报错
    记录一次使用Mongoose操作mongodb报错Mongoose查询回调函数报错BookModel.findOne({name:'Rust'},(err,data)=>{if(err){console.log('读取失败');return;}//输出data变量的值console.log(data);......