Golang入门 day1

为什么选择golang ?

Go 性能比 C 和 C++更好 :
Go优势: 数据处理能力 和 高并发能力
C 和 Go 之父: 肯—汤普森

学习go 语言 要遵守规矩哦 eg :
//规矩就是规矩 : go缩紧采用行尾风格

 for i:=0; i<10; i++{
			fmt.println("hello world");
}

Go程序的执行原理

1 命令源码文件 : 声明在一个包中,存在一个main 函数,往往单独放在一个包中的
2 库源码文件 : 比如依赖的别的模块 ,别的包等 都称为库源码文件, 执行时会生成.a为回后缀的归档文件
3 测试源码文件: 名称以 _test.go为后缀的源码文件, 必须包含 Test或者 Benchmark名称为前缀函数

go的 常用 命令

go run: 专门运行命令源码文件的命令(main函数)!! 不是用来运行所有文件的!!
生成 两种文件 .a为后缀的归档文件 和 可执行文件

go build 主要用于测试编译,在编译过程中,若有必要,会同时编译与之相关联的包。

go build 和 go install都做了什么?

go build
对于命令源码文件, 编译 链接 将产生的可执行文件挪动到当前文件夹

go install : 用于 编译代码包或者源码文件

对于含有main函数的命令源码文件,  1  生成结果文件。2将结果文件移动到环境下 (命令源码文件:  就是带主函数的源码文件 )  

go install 分两方面:
1 库源码文件 : 生成 .a为后缀的归档文件 ,并将最终结果放在到pkg目录下
2 带命令的源码文件, 编译-链接 生成.exe文件 最终结果存放在bin目录下

go get 命令 : 用于从远程代码仓库上 下载 并安装代码包 go get命令会把远程代码 下载到$GOPATH 下第一个工作区的src目录中,并安装。
1 git clone 2 compile 3 link 生成归档文件 ,4 将归档文件存在 .pkg目录下

go test 读取测试文件 并生成可执行文件

go doc 是一个很强大的文档工具

集成开发 IDE 选择 jetbrains 激活码:http://idea.iblue.me

在这里插入图片描述

package main

import "fmt"

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

编码规范 :

1 区分大小写
2 大小字母开头表示包外可见,小写字母开头表示仅包内可见
3 包名尽量和文件名一致,文件命名小写+下划线
4 结构体命名 驼峰法,首字母大小写看外部是否需要调用

缩进 : command + alt +L

linux 下 go fmt 指令格式化 go 文件

包的导入规范: 三种类型:
1 标准库的包 2 程序内部的包 3第三方包 按顺序导入

变量

var 关键字来定义
var name type
name = value

在这里插入图片描述

package main

import "fmt"

func main(){
	var a int
	a = 30
	fmt.Printf("a is: %d\n",a)
	fmt.Println("hello world")
}

go、C/C++ 语言是强类型的语言 ,像python 等都是弱类型

在这里插入图片描述

package main

import "fmt"

func main(){
	var a int
	a = 30
	fmt.Printf("a is: %d\n",a)
	var str = "王二"
	//%T  类型推断
	fmt.Printf("类型是: %T, 数值是%s\n",str,str);
	fmt.Println("hello world")
}

在这里插入图片描述

package main

import "fmt"

func main(){
	var a int
	a = 30
	fmt.Printf("a is: %d\n",a)
	var str = "王二"
	fmt.Printf("类型是: %T, 数值是%s\n",str,str)
	fmt.Println("hello world")

	var m, n int = 1,2
	fmt.Println(m,n)
	var (
		name = "zhangsan"
		age = 18
		gender = "man"
	)
	fmt.Printf("name =%s, age = %d, gender =%s",name, age, gender)
}

第一种: var name type = value

第二种 : 类型推导 var name = value

第三种简短声明: name := value
简短定义左边至少有一个是新值, 简短定义不能定义全局变量

变量的零值(默认值) int : 0 float: 0.0 string: “”

go 语言 变量/包定义了就必须使用,否则就会报错

常量

常量关键字 const (运行过程中,值不能改变)

常量的语法: 1 显式类型 2 隐式类型

例如 const PATH = “www.baidu.com”
const PI = 3.14

常量定义了可以不使用,不会报错。

iota 可修改的常量
		**如果不赋值 ,默认和上一行一样 ,不论用不用 ,iota都 会进行自增**
package main

import "fmt"

func  main() {
	const (
		a = iota   //0  iota 0
		b = iota   //1  iota 1
		c          //2 iota 2
		d          //3  iota 3
		e = 100    //100 iota 4
		f          //100  iota 5
		g = "haha" //haha  iota 6
		h = iota   //7   iota  7
		i          //8  iota  = 8
	)
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)
	fmt.Println(e)
	fmt.Println(f)
	fmt.Println(g)
	fmt.Println(h)
	fmt.Println(i)
}

在这里插入图片描述

数据类型 :
bool %t
int8 —int 64
uint8 --uint64

byte ->uint8
rune -> uint32

复合类型(派生类型)

1 指针类型
2 数组类型
3 结构化类型
4 Channel类型
5 函数类型
6 切片类型
7 接口类型
8 Map 类型

在这里插入图片描述

上图可知 ‘A’为 int32 类型 对应数字 65(ASCII下标)
‘中文’也是 int32

数值转换 :

go语言是一种静态语言,数值定义、赋值需要类型兼容, 常数在有需要时会自动转型, 变量需要手动转型。
但转换一定得是有一定关系的转换,
可以是 int32 -> int8 float64 -->int64
但不能是 bool -> int8

算术运算苻

包括: + - * / % ++ –

go 语言中 ++ – 不能参与运算 , 例如 a = b++ + --c 不支持;

位运算符 (&^位清空)

& | ! ^ >> <<
&^ : 位清空 : a = (a &^b) 对于b 这个数的二进制位, 如果二进制位为0 结果对应位就取a二进制对应位的值, 如果b的二进制位为1 ,那么结果相应位为0

a : 1100 1100
b : 0010 0011
ret : 1100 1100

程序流程结构:

顺序执行

分支语句
if 、 switch 、 select

循环结构 for 、goto
go语言不存在 while do while

if 语法格式:

一: 正常写法:
if  布尔表达式{
//case A;code
}else{
//case B ;code
}

二:包含一个可选的语句组件,在条件执行判断之前执行
if statement; condition{
}
eg:

 if a:=4; a>0{
fmt.Println('haha')
}// 这个num这能在 if模块内使用 , if模块结束, num立马销毁

switch (fallthrouth贯穿)

1 go语言 case 可以不含 break; 执行完一个分支之后switch 就结束, 也可以含有 break, 强制结束switch 语句

2 switch 省略后边变量, 则默认为布尔true

**3 fallthrough 用在case 中表示 贯穿执行下一个case 分支(类似于C++中 没写break), 但是 fallthrough 不能放在最后一个case中 **

switch{
case true:
	fmt.Println("true")
case false:
	fmt.Println("false")
}
m := 40
	switch {
	case m > 40:
		fmt.Println('a')
	case m > 30:
		fmt.Println('A')
	case m > 20:
		fmt.Println('B')
	}

在这里插入图片描述
上图可知:Println 打印字符结果为 ASCII码值

for

go语言 只有一个for 循环,没有 while 、do while

	//1
	for i:=1; i<5; i++{
		fmt.Println("haha")
	}

	//2 类似while
	i:=1
	for i<5 {
		fmt.Println("hello")
		i++
	}

	//3  while(true)
	for{
		fmt.Println("hahah")
	}

生成随机数:类似于python

在这里插入图片描述

数组的 初步使用 array

数组创建方式一:
var arr[4] int

len(arr) // 数组中实际存储的元素数量
cap(arr) //数组的容量
由于数组含有默认值 ,所以 cap(arr) == len(arr)

在这里插入图片描述
数组的创建方式二:
var b = [4] int{}// 这样写 定时 必须初始化

数组创建方式三:
var c = [4] int{1:1, 3:2}

在这里插入图片描述

数组的 创建方式四: 根据初始化元素的具体个数确定数组的长度
f := […] int {1,2,3,4,5,6,7}

f := […] int {1:2, 6:7}
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值