【主打就是简洁】及其精炼的Go语言速成大法(1)

**#注:本文章越过go的安装与环境配置。 **

1.go的初始认识

特点:

  1. 开源的编程语言
  2. 简洁

用来做什么呢?

  1. 搭载web服务器,存储集群或类似用途的巨型中央服务器。
  2. 游戏服务端的开发很不错

2.编写第一个简单的Hello word

package main//定义包名,必须在源文件中非注释的第一行指明这个文件属于那个包
//表示一个可独立执行的程序,每个go应用程序都包含一个名为main的包

import "fmt"
//fmt实现了格式化IO的函数
func main(){
//定义了程序的入口函数(如果有init()函数则会先执行该函数)
	fmt.Println("Hello world")
}

注:func main(){
}中的 { 不能单独出现在一行

3.基础语法

3.1变量

  • 变量时计算机语言中能存储计算结果或能表示值抽象概念
  • 变量 :利用变量将数据的内存地址保存
  • 变量必须经过声明才可以使用,且声明后必须使用
  • 全局变量允许声明但不使用
  • 声明变量的格式

var 变量名 变量类型
例:
var name string
var age int
var isOk bool

  • 批量申明
var (
	a string
	b int
	c bool
	d float32
)
  • 变量的初始化
  • go语言在声明变量的时候,对变量的内存区域进行初始化操作

整型,浮点变量的初始默认值为0
字符串变量的默认值为空字符串
布尔型变量默认值false
切片,函数,指针变量的默认值为nil

  • 变量初始化的标准格式`
var 变量名 类型 = 表达式
//例
var name string = "ashui"
var age int = 22
//一次初始化多个变量
var name, age = "ashui", 22
  • 短变量声明
  • 可用 := 声明并初始化变量
  • 函数名和左边等号之间要用空格
  • 如果变量已经用var声明过了,再用:=声明就会出现编译错误

ass := 1相当于
var ass int
ass = 1

package main

import("fmt")
var m = 100
func main(){
	n := 10
	m := 200
	fmt.Println(m, n)
}
  • 匿名变量
  • 多重赋值时,若果想忽略某个值,用匿名变量
  • 匿名变量用下划线—表示
package main

import(
	"fmt"
)
func foo() (int, string){
	return 10, "Q1mi"
	}
	func main(){
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
}

输出>>>
x= 10
y= Q1mi

  • 函数外的每个语句必须以关键词开始(var,const, func)
  • := 不能使用在函数外
  • —多用于占位,表示忽略值
    c1:格式化字符串
  • fmt.Sprintf (根据格式化参数生成格式化的字符串,并返回该字符串)
  • 语法

fmt.Sprintf(格式化样式, 参数列表)

package main

import (
	"fmt"
)

func main(){
	var stockcode = 123
	var enddata = "2020-12-31"
	var url = "Code=%d & endData=%s"
	var target_url = fmt.Sprintf(url, stockcode, enddata)
	fmt.Println(target_url)
}

注:fmt.Sprintf()函数的返回值要先保存在一个变量中,在输出

  • fmt.Printf()
package main

import (
	"fmt"
)

func main(){
	var stockcode = 123
	var enddata = "2020-12-31"
	var url = "Code=%d&endData=%s"
	fmt.Printf(url, stockcode, enddata)
}
  • 以上结果均为

Code=123&endData=“2020-12-31”


3.2 常量

  • 把变量的var换成const
  • 常量在定义的时候必须赋值
  • c2.值类型和引用类型
    -
  • 值类型:int , float , bool , string他们的变量直接指向内存中的值
  • 使用=将一个变量的值复制给另一个变量,实际上时拷贝了该值
  • 值类型变量的值储存在堆中
  • 一个引用类型的变量r1存储的时r1的值所在的内存地址
  • 这个内存地址为指针

3.2.1iota

  • iota是go语言的常量计数器,只能用于常量表达式
  • iota在const关键字出现时被重置为0
  • iota能简化定义,在定义枚举时很有用
  • 使用下划线—跳过某些值
func main(){
	const(
		n1 = iota
		n2
		_
		n3
	)
	fmt.Println(n1, n2, n3)

输出结果:0 1 3

  • iota声明中间插队
func main(){
	const(
		n1 = iota
		n2
		_
		n3
	)
	const n4 = iota
	fmt.Println(n1, n2, n3, n4)
}

输出:0 1 3 0

  • 定义数量级
  • 1<<10(表示将1的二进制表示向左移10位,由1变成了1000000000,也就是十进制的1024)
  • 2<<2 2的二进制表示向左移2位,由10变成了1000,也就是十进制的8
func main(){
	const(
		_ = iota
		KB = 1 << (10 * iota)
		MB = 1 << (10 * iota)
	)
	
	fmt.Println(KB, MB)
}

输出:1024 1048576

  • 多个iota定义在一行
func main(){
	const(
		a, b = iota + 1, iota + 2
		c, d
		e, f
	)
	
	fmt.Println(a, b, c, d, e, f)
}

输出:1 2 2 3 3 4

4.数据类型

  • 数据类型的出现是为了把数据分成所需内存不同的数据
    Go语言中的基本数据类型包括:

1.布尔型(bool): 只有true和false两个值
2. 整型(int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64): 表示整数值,其中int和uint的大小取决于底层计算机的字长
3. 浮点型(float32、float64): 表示小数值
4. 复数型(complex64、complex128): 由实数部分和虚数部分组成
5. 字符串型(string): 表示文本字符串
6. 字节数组(byte、rune): byte表示ASCII字符或二进制数据,rune表示Unicode字符

除了以上基本数据类型,还有指针类型(pointer)、数组类型(array)、切片类型(slice)、字典类型(map)、通道类型(channel)等Go语言特有的数据类型。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿水水哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值