go语言基础----day01(Go语言介绍,Go开发环境,第一个helloworld,变量命名规范,变量的定义和使用)

面试

# 掌握基本库
# 对面向对象有一定的了解
# flask是自学的
# 物业管理,装饰公司,移动端
# 第三方云产品
# celery定时延时
# docker

昨日回顾

# 1 python 操作redis哨兵
# 2 python 操作redis集群
# 3 mysql 主从搭建
	-两台机器,mysql版本一定要一样,server-id 不能一样
    -主库开启binlog,从库开启
    
    -主库创建一个用户,授予所有权限,binlog日志位置
    -从库


# 4 django多数据库(读写分离,分库分表:数据库中间件)
	-1 配置文件中 配置多数据库
    -2 视图函数中,手动使用数据库  using('db1')
    -3 自动读写分离:写一个py文件,文件中有个类,db_for_read,db_for_write
    -4 只要是读操作,就会触发db_for_read,只要是写,改的操作,就会触发db_for_write

image-20230424095417887

.
.
.
.

今日内容

1 Go语言介绍


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

----------------------------------

解释型语言---源代码由解释器对代码进行解释执行
编译型语言---源代码编译生成机器语言,然后由机器直接执行机器码即可执行

----------------------------------
# 编译型:
	c,java,c++,c#,go  编译成可执行文件---》在操作系统上运行,不需要装任何东西

# 解释型:
	python,nodejs(后端语言 js只能运行在浏览器里),php

# java:
	java有编译过程-----没有编译成机器语言---编译成字节码文件---java虚拟机:jvm能识别
    运行java必须要有jvm
    jvm:java虚拟机
    jre:java运行时环境
    jdk:java开发环境

-----------------------------------

# python解释型:python---》可执行文件----》python代码可以借助于pipinstaller模块编译成可执行文件
	参见博客 https://zhuanlan.zhihu.com/p/430490285

-----------------------------------

# python动态强类型

-----------------------------------

# 二 Go语言特性  go是用c写的
	-跨平台   编译型语言
	-语法接近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---go的开发环境       go1.20.3.windows-amd64.msi
# go编辑器---goland(jetbrains系列全家桶),vscode---》goland-2020.2.4.exe


go1.20.3.windows-amd64.msi   # 右键安装,装到D盘 D:\Program Files\Go\bin路径自动加到环境变量了
goland-2020.2.4.exe  # 编辑器也装到D盘

image
.
image
.
.
goland激活 打开文件夹 按照步骤操作即可
image
.
.
.
.
.
.

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的---》需要交叉编译
--------------------------

//编译  go build 文件名 比如 go build s1.go-----------编译成可执行文件
// 运行可执行文件  ./s1.exe
// 把可执行文件拖到桌面上双击也能直接运行

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

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

--------------------------

要把终端的powershell改成cmd的terminal
image
.
.
.
.
.
.
.

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 类型推导   不写类型---会自动推导出属于什么类型
	// 虽然是类型推导出来的,但变量在开始定义的时候类型就已经定下来了,并且后期不能变换类型
	// 变量只要定义了,类型就固定了。后期不能改变
	var name1 = "lqz"
	name1 = "hhh"
	// name1 = 19   会报错
	fmt.Println(name1)



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


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


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


	// 6.3 简略声明
	name5, age5, hobby5 := "lqz", 19, "篮球"
	fmt.Println(name5)
	fmt.Println(age5)
	fmt.Println(hobby5)


	// 6.4   混合
	var(
		name6="lqz"
		age6 int=19
		hobby6="篮球"
	)
	fmt.Println(name6)
	fmt.Println(age6)
	fmt.Println(hobby6)

-------------------------

// go语言 变量定义是定义 修改是修改是两个操作        和python不一样
	// 7 变量不能重复定义!!!
	var name7 = "lqz"
	var name7 string="pyy"  // 这样不行
	name7 := "pyy"     // 这样也不行

	name7, age7 := "pyy", 19  // 这种情况特殊不报错 age7前面没定义 这就不报错 有点奇怪  忽略掉
	fmt.Println(name)
	fmt.Println(age)



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

	var age8     // 错 不行
	name8  :=    // 错 不行

	age8 = 19
	name8 = "lqz"
	fmt.Println(name)
	fmt.Println(age)

-------------------

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

}

.
.
.
.
.
.

posted @ 2023-04-25 18:53  tengyifan  阅读(19)  评论(0编辑  收藏  举报